{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<center>\n",
    "<img src=\"../../../img/ods_stickers.jpg\">\n",
    "## Открытый курс по машинному обучению\n",
    "<center>Автор материала: Остроухов Максим, NRJ"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "!pip install treeinterpreter\n",
    "!pip install ggplot"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "from treeinterpreter import treeinterpreter as ti\n",
    "from sklearn.datasets import load_boston\n",
    "from sklearn.ensemble import RandomForestRegressor, RandomForestClassifier\n",
    "from sklearn.tree import export_graphviz\n",
    "import seaborn as sns\n",
    "import scipy as sp\n",
    "from sklearn.tree import DecisionTreeClassifier, DecisionTreeRegressor\n",
    "from ggplot import *\n",
    "import matplotlib.pyplot as plt\n",
    "import warnings\n",
    "warnings.filterwarnings(\"ignore\")\n",
    "%matplotlib inline\n",
    "import numpy as np\n",
    "import pandas as pd"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# От маленького деревца к большому лесу"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "На сегодняшний день те, кто хоть раз сталкивался с машинным обучением, наверняка слышали о решающих деревьях, их ансамблях и всевозможных модификациях, применяемых под различные задачи. Действительно, несмотря на то, что первые упоминания регресионных деревьев датируются еще 60-ми годами прошлого века, основное развитие деревьев решений в 80-90е годы, появление CART, ID3 и других подходов, заложило большой фундамент для огромного класса алгоритмов, в основе которых лежит древовидная структура. Одним из таких алгоритмов, получивших широкое распространение, является случайный лес, о котором и пойдет речь в этом туториале.\n",
    "\n",
    "Одним из несомненных плюсов, которые выделяют у деревьев в целом, является их интерпретируемость. Взглянув на построенное дерево, вы с легкостью можете определить, по каким причинам было принято то или иное решение.  \n",
    "Например, за 3 простых шага можно определить, испортился ли продукт в холодильнике."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<img src=\"img/tree.png\" width=\"50%\" height=\"50%\">"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Однако, когда речь заходит о случайном лесе, начинают возникать некоторые сложности, и связаны они в первую очередь с тем, что алгоритм представляет собой композицию таких деревьев, не говоря уже и о том, что каждое дерево может строится не на всей выборке и не со всеми признаками.  \n",
    "В результет также легко пройтись по картинке и понять, почему ваш продукт протух, уже не получится. Несмотря на всю, казалось бы, \"непроходимость\" данного леса, определенную информацию, дающую представление о структуре вашего леса, из него все же можно получить.   "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<img src=\"img/forest.png\" width=\"50%\" height=\"50%\">"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Как устроены решающие деревья"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Прежде чем переходить к самому сладкому, необходимо вспомнить, как прорастают такие деревья. Данная тема уже ни раз подробно разбиралась в различных статьях и курсах, в том числе курсе от ODS, поэтому напомним лишь основные вехи.  \n",
    "Основным подходом для формирования каждого последующего разбиения является максимизация функционала: $${Q}=H({R_m})-\\frac{|R_l|}{|R_m|}H(R_l)-\\frac{|R_r|}{|R_m|}H(R_r)$$\n",
    "где ${R_i}$ - объекты в i-ом поддереве, $ \\frac{|R_i|}{|R_m|}$ - кол-во объектов, попавших в соответствующее поддерево, $H({R_i})$ - критерий информативности, характеризующий качество разбиения i-ого листа при $i \\in \\{R - правое\\ поддерево\\ ;L - левое\\ поддерево; M - разбиваемый\\ лист\\}$  \n",
    "В зависимости от задачи, которую предстоит решать вашим деревьям, критериями информативности $H(R)$ для выбора разбиения могут выступать:\n",
    "* В задаче классификации:  $$Кросс\\ энтропия :  S = -\\sum_{k=1}^{K}p_i \\log_2{p_i}$$ $$Неопределенность\\ Джини : G = 1 - \\sum\\limits_{k=1}^{K} (p_k)^2$$\n",
    "где p - доля k-ого класса в листе.\n",
    "$$$$\n",
    "* В задаче регрессии: $$Среднеквадратическая\\ ошибка : {MSE}=\\frac{1}{n}\\sum_{k=1}^{K}(Y_i-\\hat{Y_i})^2$$\n",
    "где $Y_i$ - среднее значение целевой переменной в сформированном листе."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "Чтобы не упустить ничего важного, рассмотрим небольшой пример, как строится дерево на примере задаче классификации и метрики Джини.  \n",
    "Для демонстрации сгенериуем датасет, имитирующий полки магазина, где наша цель будет научиться отделять овощи от фруктов по их расположению на полке.  "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<img src=\"img/shelf_fruits.png\" width=\"40%\" height=\"40%\">"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "X=np.arange(3)\n",
    "X_df=np.array(np.meshgrid(X,X)).T.reshape(-3,2)\n",
    "y_df=np.zeros(9).reshape(-1,1)\n",
    "y_df[5]=1\n",
    "y_df[8]=1\n",
    "\n",
    "dt_clf=DecisionTreeClassifier()\n",
    "dt_clf.fit(X_df,y_df)\n",
    "\n",
    "export_graphviz(dt_clf, feature_names=['Номер на полке','Номер полки'], \n",
    "out_file='small_tree1.dot', filled=True)\n",
    "!dot -Tpng 'C:\\Users\\Maksim.Ostroukhov\\small_tree1.dot' -o 'small_tree.png'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "export_graphviz(dt_clf, feature_names=['Номер на полке','Номер полки'], \n",
    "out_file='C:\\\\Users\\\\Maksim.Ostroukhov\\\\small_tree1.dot', filled=True)\n",
    "!dot -Tpng 'C:\\Users\\Maksim.Ostroukhov\\small_tree1.dot' -o 'small_tree.png'"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<img src=\"img/small_tree_ent.png\">"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Получившееся дерево всего за 2 разбиения идеально справилось со своей миссией. Теперь взглянем на то, какой признак сыграл наибольшую роль в решениии этой <s>непростой</s> задачи.  \n",
    "Бегло просмотрев картинку, можно сделать вывод, что номер полки в данном случае является наиболее важным параметром. Но так ли велика разница между ним и номером продукта на полке? Для ответа на этот вопрос воспользуемся критерием, который используется в современной реализации sklearn для подсчета важности признаков и называется mean decrease impurity (MDI): $$MDI(X_m)=\\sum_{n} \\frac{|R_c|}{|R|} Q$$  \n",
    "где $n$ - количество, нод, в которых используется выбранный признак $m$, $\\frac{|R_c|}{|R|}$ - доля объектов от общего числа, достигших ноду $c$, $Q$ - функционал качества, который мы оптимизируем.  \n",
    "Суть данного критерия сводится к сравнению, насколько тот или иной признак улучшил разделимость классов/повысил точность с учетом доли объектов, используемых при разбиениях по этому признаку. Разберем на конкретном примере, как же считается важность признаков на основе данной метрики. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Поскольку на каждый признак приходится по одной ноде, то и в наша формула сведется к расчету функционала качества для одной ноды с поправкой на кол-во объектов в ней.  \n",
    "Тогда $MDI$ для наших признаков: \n",
    "$$MDI(номер\\ полки)=(0.346-0\\cdot\\frac{6}{9}-0.444\\cdot\\frac{3}{9})\\cdot1\\approx0.198$$ \n",
    "$$MDI(порядковый\\ номер\\ на\\ полке)=(0.444-0\\cdot\\frac{1}{9}-0\\cdot\\frac{2}{9})\\cdot\\frac{3}{9}\\approx0.148$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Отмасштабируем полученные рез-ты и сравним с результатами, которые нам формирует sklearn:  \n",
    "$$MDI(номер\\ полки)\\approx\\frac{0.198}{0.198+0.148}\\approx0.5722$$\n",
    "$$MDI(порядковый\\ номер\\ на\\ полке)\\approx\\frac{0.148}{0.198+0.148}\\approx0.428$$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 108,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[('Порядковый номер на полке', 0.42857142857142855), ('номер полки', 0.5714285714285714)]\n"
     ]
    }
   ],
   "source": [
    "print(list(zip(['Порядковый номер на полке','номер полки'],dt_clf.feature_importances_)))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Бдительный читатель может сразу заметить, что результаты с учетом округления немного отличаются. Для получения максимально точных результатов предлагается повторно проделать эту же операцию с самостоятельным подсчетом неопределенности Джинни, поскольку для текущих расчетов использовались окгругленные значения, изображенные на графе. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 119,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Важность расположения на полке: 0.42857142857142855,\n",
      "Важность номера полки: 0.5714285714285714\n"
     ]
    }
   ],
   "source": [
    "first_node_gini=1-(7/9)**2-(2/9)**2\n",
    "second_node_gn=1-(1/3)**2-(2/3)**2\n",
    "\n",
    "y_imp=first_node_gini-0*(6/9)-(second_node_gn)*(3/9)\n",
    "x_imp=(second_node_gn-0*(1/9)-0*(2/9))*3/9\n",
    "\n",
    "print('Важность расположения на полке: {0},\\nВажность номера полки: {1}'.format(x_imp/(x_imp+y_imp),y_imp/(x_imp+y_imp)))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Не так страшен \"черт\", не правда ли? Чтобы наконец обобщить данную формулу для случайного леса, который по сути является всего лишь композицией таких деревьев, нам необходимо просуммировать MDI по всем деревьям в получившемся лесе и взять среднее по всему лесу."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    " $$MDI(X_m)=\\frac{1}{t}\\sum_{t}\\sum_{n} \\frac{|R_c|}{|R|} Q$$  "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "где t - кол-во деревьев в лесе."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Несколько вещей, которые стоит знать об этом критерии:\n",
    "* Если в данных присутствуют скореллированные признаки, то при выборе параметров только один из этих признаков будет выбран в качестве предиката, и, как результат, получит высокий коэффициент MDI. Конечно, это не является проблемой, если мы занимаемся отбором признаков, например, для устранения эффекта переобучения. С другой стороны, с точки зрения интерпретации полученных результатов могут возникнуть некоторые сложности, поскольку не использованные в разбиениях признаки получат низкую оценку и скорее всего останутся за пределами нашего исследования\n",
    "* Данный критерий отдает предпочтение признакам с большим количеством категорий. Подробнее об этом [тут](https://link.springer.com/article/10.1186%2F1471-2105-8-25 )"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Конечно, MDI критерий не единственный в своем роде. Альтернативным подходом для измерения важности признака по доле наблюдений, охватываемых данным признаком, является mean decreased accuracy (MDA) aka permutation importance. В данном случае гипотеза состоит в том, что если признак не так важен, то перемешивание значений в соответствующей колонке слабо повлияет на точность алгоритма.  "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<img src=\"https://media.giphy.com/media/1AIwsXQzH1Js6cxVBU/giphy.gif\" width=\"30%\" height=\"30%\">"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Для MDA характерны следующие черты:\n",
    "* Вычисляется быстрее чем MDI\n",
    "* Не требует bootstrap выборки при создании модели и устройчива к корреляции признаков\n",
    "* На практике часто совпадает с MDI"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Общее описание алгоритма:\n",
    "1. Обучаем наш случайный лес на исходных данных \n",
    "2. Считаем интересующую нас метрику $S_b$ на наших данных для полученной модели\n",
    "3. Для каждого признака $X_i$, где X - имеющаяся выборка, поочередно проделываем следущие шаги\n",
    "    * Случайным образом перемешиваем данные внутри выбранного $i$-ого признака\n",
    "    * Считаем метрику $S_i$ на получившемся наборе данных\n",
    "    * Находим разницу $\\Delta S_i$ между метриками $S_b$ на исходном наборе и $S_i$ на наборе с измененным признаком"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "В результате для каждой переменной мы получили $\\Delta S$, где $|\\Delta S|$ говорит нам о том, насколько изменение данного параметра влияет на точность получившегося алгоритма. Соответственно, те признаки, у которых это значение сравнительно мало можно отбросить, предполагая, что для конечного алгоритма они не так важны."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "К сожалению, в отличие от R, в котором данный метод реализован в библиотеке randomForest, в sklearn такой опции нет. Но это не повод отчаиваться! Ниже представлена реализация такого алгоритма и сравнение результатов с MDI. В качестве набора данных будем использовать стандартный датасет цен на Бостонскую недвижимость и факторов, влияющих на эту цену. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "$Расчет\\ MDA:$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 373,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def score(x1,x2):\n",
    "    return metrics.mean_squared_error(x1,x2)\n",
    "# defining feature importance function based on above logic\n",
    "def feat_imp(m, x, y, small_good = True): \n",
    "    score_list = {} \n",
    "    score_list['original'] = score(m.predict(x.values), y) \n",
    "    imp = {} \n",
    "    for i in range(len(x.columns)): \n",
    "        rand_idx = np.random.permutation(len(x)) # randomization\n",
    "        new_coli = x.values[rand_idx, i] \n",
    "        new_x = x.copy()            \n",
    "        new_x[x.columns[i]] = new_coli \n",
    "        score_list[x.columns[i]] = score(m.predict(new_x.values), y) \n",
    "        imp[x.columns[i]] = score_list['original'] - score_list[x.columns[i]] # comparison with benchmark\n",
    "    if small_good: \n",
    "         return sorted(imp.items(), key=lambda x: x[1]) \n",
    "    else: \n",
    "        return sorted(imp.items(), key=lambda x: x[1], reverse=True)\n",
    "\n",
    "def mda_boston(rf):\n",
    "    boston = load_boston()\n",
    "    X = boston[\"data\"]\n",
    "    Y = boston[\"target\"]\n",
    "    names = boston[\"feature_names\"]\n",
    "    X=pd.DataFrame(X,columns=names)\n",
    "    rf.fit(X, Y)\n",
    "    return pd.DataFrame(feat_imp(rf,X,Y),columns=['Признак','Важность'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 374,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Признак</th>\n",
       "      <th>Важность</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>LSTAT</td>\n",
       "      <td>-52.987223</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>RM</td>\n",
       "      <td>-51.031723</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>DIS</td>\n",
       "      <td>-6.632130</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>CRIM</td>\n",
       "      <td>-6.110963</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>NOX</td>\n",
       "      <td>-4.333413</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>PTRATIO</td>\n",
       "      <td>-2.256260</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>AGE</td>\n",
       "      <td>-1.347716</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>TAX</td>\n",
       "      <td>-1.302830</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>INDUS</td>\n",
       "      <td>-1.001670</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>B</td>\n",
       "      <td>-0.887314</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>RAD</td>\n",
       "      <td>-0.141977</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>ZN</td>\n",
       "      <td>-0.052301</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>CHAS</td>\n",
       "      <td>-0.013580</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    Признак   Важность\n",
       "0     LSTAT -52.987223\n",
       "1        RM -51.031723\n",
       "2       DIS  -6.632130\n",
       "3      CRIM  -6.110963\n",
       "4       NOX  -4.333413\n",
       "5   PTRATIO  -2.256260\n",
       "6       AGE  -1.347716\n",
       "7       TAX  -1.302830\n",
       "8     INDUS  -1.001670\n",
       "9         B  -0.887314\n",
       "10      RAD  -0.141977\n",
       "11       ZN  -0.052301\n",
       "12     CHAS  -0.013580"
      ]
     },
     "execution_count": 374,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "rf=RandomForestRegressor(random_state=256)\n",
    "var_importance=mda_boston(rf)\n",
    "var_importance"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "$Расчет\\ MDI:$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 376,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[('RM', 0.4645898313429839),\n",
       " ('LSTAT', 0.35182346004313203),\n",
       " ('DIS', 0.061251328408256145),\n",
       " ('CRIM', 0.03977662113950492),\n",
       " ('NOX', 0.02061378656223358),\n",
       " ('PTRATIO', 0.01932330429116442),\n",
       " ('AGE', 0.011220816883363013),\n",
       " ('TAX', 0.010690452048413087),\n",
       " ('B', 0.008943853177943635),\n",
       " ('INDUS', 0.007581362480570153),\n",
       " ('RAD', 0.0030993545872310966),\n",
       " ('ZN', 0.000652335297086997),\n",
       " ('CHAS', 0.00043349373811705003)]"
      ]
     },
     "execution_count": 376,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sorted(list(zip(boston[\"feature_names\"],rf.feature_importances_)),reverse=True,key=lambda x:x[1])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Как и в случае с более классическим подходом MDI, не смотря на разные подходы, метрики почти совпали. В данной ситуации мы наверняка можем сказать, что признак \"Среднее количество комнат на один жилой дом\"(RM) и \"процент низжих слоев населения от общей количества\"(LSTAT) являются наиболее важными, и выкидывать их из признакового описания не стоит."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# График частичной зависимости"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Допустим, что в нашей задаче нам удалось выделить признак, важность которого сомнений не вызывает. Естественным желанием в таком случае будет посмотреть, а как же зависит наше целевое значение от выбранного параметра. Хорошей аналогией в данном случае будут коэффициенты линейной регресии, посмотрев на котоорые, можно сказать на сколько изменится значение $Y$ при изменении признака $X$ на 1.   \n",
    "Первое, что приходит в голову в такой ситуации - это построить диаграмму рассеяния и надеяться, что там мы найдем ответы на все интересующие нас вопросы."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 361,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[Text(0,0.5,'SalePrice'), Text(0.5,0,'RM')]"
      ]
     },
     "execution_count": 361,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAhkAAAGBCAYAAADLx6M4AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzsvXl0XPV9//3+3mX20WpJXmTZsjEY\n7JhgjBcwayE4gUAoTdMmTZuTtmm6pAd+TROSBvg9adKE0idPT5KTQ/KcbiE5TX9PKYGEPYTNxthm\ndWSwMViWLVuSpZFGmvWu3+ePO/dqds2MZpP0eZ2TE3Rn5t7vfD3Sfc9neX8Y55yDIAiCIAiiygiN\nXgBBEARBEIsTEhkEQRAEQdQEEhkEQRAEQdQEEhkEQRAEQdQEEhkEQRAEQdQEEhkEQRAEQdQEqdEL\nqITx8Uijl1BX2tt9mJqKN3oZiwbaz+pDe1pdaD+rC+1n9cne066uYN7nUSRjASBJYqOXsKig/aw+\ntKfVhfazutB+Vp9S95REBkEQBEEQNYFEBkEQBEEQNYFEBkEQBEEQNYFEBkEQBEEQNYFEBkEQBEEQ\nNYFEBkEQBEEQNYFEBkEQBEEQNYFEBkEQBEEQNYFEBkEQBEEQNYFEBkEQBEEQNYFEBkEQBEEQNYFE\nBkEQBEEQNYFEBkEQBEEQNYFEBkEQBEEQFaPpRsHHpDqugyAIgiCIRYKmm5iJqRBFVvA5FMkgCIIg\nCKJkOOeYjiqYnElCM8yiz21IJONjH/sYgsEgAKC3txef+MQn8M1vfhOiKGL37t34q7/6q0Ysi1ik\nDAyGsPfwCMbDCXS1eXHTleuxusPb6GU1Ldn7tXvLCmzu71x01yyVeq9tYDCEQ08ew/DYTNPtBVDf\n/bCvNTQWgaabkCUBa3qC6O0OYPhc1FmDLAl4Z2gK0YSGgFfGNZesws271tZl3cXO24jPTr79quZ1\nFc3ATExFKxPAS3h+3UWGoigAgAcffNA5duutt+J73/seVq9ejc997nM4cuQINm3aVO+lEYuQgcEQ\nHnrhhPPz2FQCDz7+Nm65Ym1T/eFuFvLtl/1zLW8k9b5mqdR7bfb1ZEmAyZtrL4D67od9rYSiIxxR\nnOOKauDN4xNoD7rhcUt493QY01ErZC8whmhcwy/3nQQAR2i8fuxcTdZdbD8ANOSzk1R0TKXtF099\njuZ7XdPkmImrSKqF6y/yUfd0ydGjR5FIJPDZz34Wf/iHf4hDhw5BVVX09fWBMYbdu3dj//799V4W\nsUjZe3ikrONLnUbsVzP/G9V7bc28F0B912efM5rQMo5H4tbPkdRx+2fTzPxe/fwbZ5z//tXBU0Wv\nMd815jveqM9OJGu/7P2bz3UTio6J6UTZAgNoQCTD4/Hgj//4j/Hxj38cJ0+exJ/+6Z+ipaXFedzv\n9+P06dNFz9He7oMkibVealPR1RVs9BIWJFNRFbKUq6XDMZX2NA/z2a9K97OZ/43qvbb066Vftxn2\nAqjvftjXMgwOxmYLC01uQmICDJOnIj4cYAAHMp4XT+rOmkZDsZqsu9h+cI6GfHay98swrH2q5Lq6\nYSIcUSCCoc0t5zze0eEHAHjdhaVE3UVGf38/1qxZA8YY+vv7EQwGEQ6HncdjsViG6MjH1FS81sts\nKrq6ghgfjzR6GQuS9oDLCRXayJKANr+L9jQP+fYLAHravUX3az6f0UqvWQ/qvTb7erIkQNNnC+qa\nYS+A+u6HfS1RZNDT9kJgDJxzSKK1RwJjME0OxqyCRBu/V3bWtLzTj1OjM1Vfd7H9ANCQz072fkmp\nz1I51+WcI5bUEUtoBesuOjr8mJyMAQA8LhEdLZ68z6t7uuS///u/8e1vfxsAMDY2hkQiAZ/Ph1On\nToFzjr1792Lbtm31XhaxSNm9ZUVZx5c6jdivZv43qvfamnkvgPquzz5nwJv5DTros34Opo7bPwtC\nZhvlNZescv77+u19Ra8x3zXmO96oz04wa7/s/Sv1uppuIDSTRLSIwCiHukcyfud3fgdf+cpX8Pu/\n//tgjOEf/uEfIAgCvvjFL8IwDOzevRsXX3xxvZdFLFLsQierwjuJrjYPdZcUId9+1boivhHXLJV6\nr80+76vHJnB6LNJUewHUdz/SrzXEGDTdgEsS0dcTSOsuSeL81W1Od0ksocGfp7tk6wXdmL56XdXX\nXcp+WN0eUWi6AVkSnNqIau9Z+loYY1B1A7IkYk1PoKT3anKOaFxDXNGrui7G0+NLC4RmCBvWE0qX\nVBfaz+pDe1pdaD+rSyP3M7sDxeb2q9c1jXhUVAPTcTWneLYY2emSDf3L8j6PHD8JgiCIBUEz+6kU\noliXSaPXXmlbajmQyCAIgiCanmbxUylX6IyHc4s/rePJWi2xJBKKjkhcRRnBi4ogW3GCIAii6WkG\nDxFb6IxNJTLM0gYGQwVf09WWv/6rqy1/N0at0Q0TkzNJTMdqLzAAEhkEQRDEAqAZIgKVCJ1m6hiK\nJTWEppNQ9eLzRqoJpUsIgiCIpqerzZvXd6KeEYFKhE4zdE/Z01LnGmZWC0hkEARBEE3P7i0r8nZp\n1DMiUKnQ2dzf2ZAiT845ogkN8aReFc+LQqh64cJRSpcQBEEQTc/m/k7cfvU69LR7ITCGnnZv3dtA\nmyn1MReKZmBiOolYDQXGxHQCP3n6GO564JWCz6FIBkEQBLEgaFREIP36QHMax9mYJkckriJRw7bU\neFLHr371Lp5/bdiaHVMEEhkEQRAEUSKNFjrFqHVbqm6YOPD2GH79+jASyqyIWbu88OA1EhkEQRBE\nXVmIplrNjG5YhZ216hrhnOOdoSk88cophGZmi1zbg27s2dGHbRd0FXwtiQyCIAiibjSLqdZioJRp\nqfPlzEQMj+8/icGRWVt2j0vER67oxwfXdUAShYzR8tmQyCAIgiDqRjPbbC8kFM1AJKZCr1FuZDqm\n4plDp/DGuxOOgBEYsP3CHlx3aS/6VrU5s0uKQSKDIAiCqBvNYKq1kKl1YaeqGXjxrbN46a2RDF+N\njX1t2LNjDbrby5tgTSKDIAiCqCnpNRjTMRWSKMDrzrz9NMpmeyFRy8JOk3O88e44nj50GpG45hxf\n3uHDR3auwXm9rRWdl0QGQRAEUTOyazBkUcBURAGADKHRjF4TzUKtCzvfPzuNx/cPYSQUd44FvTKu\nv2w1Lj2/C4JQuOZiLkhkEARBEDUjuwbD45bQDkAzTAiMNaXXRLNQ68LO8XACTx44hXeGppxjkshw\n5ZaVuOrilXC7xHlfg0QGQRAEUTPy1WB43BJ8jOHuP9o25+uXarurphuYjqnQjerLi3hSw7Ovn8GB\nI2MZZlofPG8ZPrR9NdoC7qpdi0QGQRAEUTPmM9hsKba7mpwjGtcQV/Sqn1s3TLxyxDLTSqqZZlof\n2bUGvV2Bql+TRAZBEARRM+Yz2GyptbsqqoHpuAqzypWdnHMcOTmFJw8MYXJGcY53tLixZ8cabFrb\nXtTrYj6QyCAIgiBqxnzmfTRzu2s10ziGaSIS1zKiC9VieDyKx/cP4eRoppnWtVtXYdem5ZDE2s5J\nJZFBEARB1JRK533MJ9VSS6qZxokndUQSKuaYM1Y24aiCpw+expvvTTjHBMaw46IeXHfpKvg9cnUv\nWAASGQRBEERTMp9USy2pRhqnVm2pipoy0zp8NqNo9MI17dizow9dbeWZac0XEhkEQRBEU9Kso9Xn\nk8apVVuqaXK8/u44njl0GpHErJnWik7LTGv9qsrMtOYLiQyCIAiiKI1sI23G0eqVpnFUzcBMDeaN\nvHfGMtManUwz0/LJ+NBlq3HJhvmZac0XEhkEQRBEQRrdRtqMPhnlpnFMzhGJa0hUuS31XDiBJ18Z\nwtFTYeeYLAq48uIVuOrilXDJ8zfTmi8kMgiCIIiCNLKNtNECpxDlpHESio5IQqtqW2osqeHZ14Zx\n8O0xZ44JA3DJ+ctww7bVaK2imdZ8IZFBEARBFCS9/iCh6IgmNOiGiYlwAgODoZre7JvZJ2OuNI5h\nmpiJaVC06rWl6oaJ/QOjeO6NMxntrv0rgvjIrrVYtcxftWuVCgMgS4XbYElkEARBEAWx6w8Sio5w\nZNbIiQM1jyo0s09GMeJJDZGEVrW2VM45BgYn8eSBU85wOQDobPXgwzv6cOGa2plpFYIB8Lkl+L0S\nRIFEBkEQBFEBdv1BNK1jAbCmdCYVHf/+xFG0+l01qZdoVp+MQmi61ZaqGdVrSz19zjLTGhqbNdPy\nukVct7UXOy7qqbmZVjYM1vTcng4fJkvojyGRQRAEQRTEFg0/fOQIwABJFBD0WkZOUxEFYEDQ56pJ\nvUSz+mRkwzlHNKEhntSr1pYajip46uApvPVeyDkmMIZdm3pw7dZe+Dz1vX0zAF6PBL/HilyIJYob\nEhkEQRBEUTb3d2JTf0dGVMFOZWR/k65mvUSz+mSkd7x0tHjwwfM6sX5VW1XOnVR1vPDmWez7zUiG\nmdZFay0zrWWt9TXTYiyVFvHIFbXCksggCIIg5iQ7qqCnUgIBb6Y9dbXrJZrNJ8PueOGcwzQ5RkJx\njITiuHE7sKG3cqFhmByvHTuHZ14dRiwtNbVymR8f2bkG61a2VGP5JTNfcWFDIoMgCIKYk+yoQsAr\nQxIFeN2ZtxG7XqIZ/S2qwd7DIzBNDiOrJfXVo+cqFhnHh8N4fP9QRqSoxSfjQ9v78MENyyDUsahT\nYIDPI8PnkapyXRIZBEEQREmkRxWyPSxsdm9Z0bT+FvPFME2MhGLIV9eZ3vVRKmNTcTzxyim8ezrN\nTEsScNXFK3HllhV1NdOqtriwIZFBEARBlE2xeokHHhnI+5pm8LeoFLsttS3gRmgmV1C0B0s3wIom\nLDOtQ+9kmmltvaALN2xbjRa/q0qrnhtBYPB7JPjcUk3aYElkEARBEBVRqF5iofpb5CN7Wuq2jd14\n6uDpnOdt29gNwEp9vHr0HKYiCtqDbmzb2O2kUTTdxMsDI3j+jbMZJl3rVrbgIzvXYGUdzbREgcHv\nkeF1izX12CCRQRAEQVSVheZvkY9C01JtwZBPSBwfDmcIkNCMgqcOngbnHEnVwFMHT2ekVZa1evDh\nnWuwsa+tbmZaksDg98rwuGorLpzr1fwKBEEQRA6LtTASWDj+FoXQdAPTMTWjhTSdDb1teYs8Xz16\nLueYqhn4r1+/h4QyG7nwuiX81qW92HFRd1G3zGoiiwL8XgkeV31v+yQyCIIg6sxiLYy0aVZ/i7kw\nOUc0riFe4bTU9CiFnWZJnzEiCgy7Ni3HtVtX5XTl1AqXJMDvkeF2NWYiK4kMgiCIOtPMg7+qRbP5\nW8yFohqYias5ranl0B50YzycRDSh5diwb+rvwJ4dfehsqU/KyC2LCHglyFJjx72TyCAIgqgzi6kw\ncqFjmhyRuIqEOr9pqYbJEfDKODI4iXSdIksCrt/Wiyu3rJznSkvD4xLh98hFJ6PWExIZBEEQdWYx\nFEYuBhKKjkhcxTyCFwCAd0+H8fgrQziX9m8qCgwrOn24flsvzl/dPs+VFocB8LituSL1Hpg2FyQy\nCIIg6sxCL4xc6BimiZmYltFGWgmjk3E88coQjg9PO8dckoCrP7gKV2xZDleNUxX2RNS5xq03EhIZ\nBEEQdWahFkYuBmxTLT6P6EUkruJXrw7j1WPnnPMwAJdu7Mb123rR4qutmRZjKXHhaV5xYdMQkREK\nhfDbv/3b+Nd//VdIkoS77roLjDFs2LAB9957L4Qm3zSCIIj5stAKIxc6umFiOqpCy+cJXiKabmLf\nb0bw/JtnoGqz51m/yjLTWtFZWzOtag0tqyd1FxmapuGee+6Bx2PlHr/1rW/hjjvuwI4dO3DPPffg\n2WefxQ033FDvZREEQRBNQLX9QzjnmImpCE0nUWnwgnOOw++H8NTBUwhHVed4V5tlpnXB6tqaadVq\nrkg9qLvIuO+++/B7v/d7+NGPfgQAOHLkCLZv3w4AuOqqq7Bv3z4SGQRBEEuQavuHKJqBSExFCxMq\nFhhDoxE8/soQTp+LOsd8bgnXb+vFZRfW1kzLnividS88cWFTV5HxP//zP+jo6MCVV17piAzOuaMA\n/X4/IpHInOdpb/dBanDvb73p6go2egmLCtrP6kN7Wl2W4n4eevJY3tbLV49N4Nrta0s+j2FyzEQV\nqGBoabNucx0d5aUyJsIJPPz8e3gtzcVTEhmu3bYaH961Fj6PXNb5ykEUGII+F3ye2gwtqxalfEbr\nKjIeeughMMawf/9+vPPOO/jyl7+MyclJ5/FYLIaWlpY5zzM1Fa/lMpuOrq4gxsfnFl9EadB+Vh/a\n0+qyVPdzeGwmbzvp6bFIyfuRry21o8OPyclYSa9Pqjqee/0MXh4YzTDm2ryuA3u296GjxYNkXEUy\nrhY5S2VIojW0THaJiEeTiEfnfk2jyP6MFhIcdRUZP/3pT53//vSnP43//b//N+6//34cOHAAO3bs\nwIsvvoidO3fWc0kEQRBEkzAf/5DsaanlYpgch94Zw69eG0Y8OWsr3tvlx0271mLN8tpFlmRRQMDb\nOOvvWtLwFtYvf/nLuPvuu/Gd73wH69atw4033tjoJREEQRANoBL/kELTUkuFc54y0zqV4cTaFnDh\nxu19+MD6zprVQ7gkAX6vDLe8+MSFTcNExoMPPuj8909+8pNGLYMgCIJoEsr1D5lrWmohjg+H8erR\ncxibSiCe1BBNzEYuXLKAaz64Cld8YEXNrLmbZa5IPWh4JIMgCIIgbErxD+GcI5LQMtIapXJ82LIA\nj8Qyp60yANtSZlrBGplpNdtckXpAIoMgCIJYMCiagZlYZdNSNd3E4/uHcC6cyHD8dMsC+noCuO2q\ndVVc6Sxelwi/V266uSL1gEQGQRAE0fSYnCMS15BQyo9emJzjjePjePrgaUzHZrtCJJGhxe+CWxaR\nUOY3xyQbhlTkYomKCxsSGQRBEAuYajtkNiOKamA6rsKsIHoxODKDpx89gqHR2XZLgSHHh6I96K7K\nWpt5ImojIJFBEASxQKm2Q2azYZocM3EVSbX8KENoJoknD5zCkcFZLyZRYLhobTvGw8mc2R/bNnbP\na60LYSJqIyCRQRAEsUDZe3ik4PGFLjLymWqV+rrnXj+D/UcyzbQ+sK4TF/S14tipMDTDgK6YkCQR\nKzt92LaxGxt62ypaJwPg9SyMiaiNgEQGQRDEAmVoLIJIXINumJBShk5et4TxcLLRS6sYwzQxE9Og\naOVFLwzTxMG3z+HZ14YzukZWdwfw+zduxHgoiqcOngYAuGUJ7pQreKUCwx63HlhAE1EbAYkMgiCI\nBpNdV3HTleuxusM752sicQ16yuFS102EIwoAYG0N3SlrSTypIZLQMjo/5oJzjmOnrLbUielZcdUW\ncGHPjj58YF0nOjsDeGJfrskXALx69FxZImMhjltvJCQyCIIgGsTAYAiPvTyEwdEZJxJhTiXw4ONv\n45Yr1hZNeew9PIKgV8ZUSljYRBNaUYfMZqRSS/CzEzE8/soQTpydcY65ZRHXXLISl2/ONNPK3qe5\njmfDGOD3yPC5JRIXZUAigyAIogHYRZvj4QTAMyMRsuSas65iPJyAxy2hHUAkMZsyafG5Fkw9RqWW\n4DNxFc8cOo3Xj407r2MM2H5hD37r0l4EvLkTUtuDboRmcgXFXF0lAgN8Hhk+z8Idt95ISGQQBEE0\nALtoUzcyv71HExpa/K456yrsYWIetwSPe/ZPuccl4oFHBpq+pVXTTUzHlLIswVXNwEuHR/DSW2cz\noh7nr27Dh3f0oafDV/C12zZ2OzUZ2cfzQeKiOpDIIAiCaAD2MC5JFJy6CmBWdMw1eTR7mFhS0RGO\nqjBMEy5ZRNArN2VLK+cc0ZQleKnywuQcbx6fwNOHTmMmzUyrp92LD+9cg/NXz11TYdddvHr0HKYi\nCtqD7rxFn4LA4PdI8LpJXFQDEhkEQdSNpWAcVSp2JCK7rsI2cJqrrmJzfydOjkbw/BtnMBNTwTkg\nMAaBMei6iamIAp9mQNVN/PCRI9jU39Hw/VZTluB6GX2pJ87O4PFXhnB2IuYc83tlfGhbL7Ze0A2x\njPqIDb1tBYs8BYEhkBIXjMRF1SCRQRBEXVjsxlHlYkcisusqVnf58ckPX1RSd8lrx8YR9LmQVA3o\nuglNNyGKltAwTY6ZmGqJFpZ/v+sl+iqxBJ+YTuDJA6fw9skp55gkMuz+wApc9cGV8Liqc/sSBQa/\nR4bXLZK4qAEkMgiCqAuL2TiqErLHmq9ZHnRu8l1dQYyPR4q+Pn0/7RQLY5ZLpiAymJw76Yh0e2t7\nv+sl+pKqjpm4VrIleDyp47nXh7H/yBjMtF7WLes7ceP2vqrZf0sCg98rw+MicVFLSGQQBFEX7BqE\n3OML1zhqvpQy1rwQ6ftp13UIjMFI3Zg5t0QHAATTui3s/a616DNME5G4VrIluG6YOPD2GH79+nDG\nsLK+ngBu2rUGq7ur4/0hiXbkgm5/9YB2mSCIumDXIOQeL17guNjJl7K4tmvuG2r6fga8MsIRBYLA\nIDIGURSgGyZkWYTXJSKS0DAVVSCJAlZ3BwDUVvSVY6rFOcc7Q1N44sAphNLMtNqDbuzZ0YfN/R1V\niTRIIkPAK1ctzUKUBu02QRB1IbsbIv34UqVQyqK11TdnTUb6ftrfyqMJDS0+F/p6AujtDmDf4ZGM\nolK7IHRgMFQT0afplqmWZhQ31To+HMarR89hbDJu+WQkZ2s13LKI67auwq7Ny6syxVQWBXS2eOAq\ny4mDqBYkMgiCqAvZNQhdbZ6GdztUm3ILKQulLJ49eAqf2XNB0Wtl7+fatJoOmyMnQhlGXfZsk72H\nR6oq+sppSz0+HMbj+4cwk1UIyhiw48IeXFfATKtcXJIAv1eGWxbhcUsoXuFC1AoSGQRB1I351CA0\nO5UUUtopi6SiZ4iBaEIryVArez8HBkMZrwvHVHS15UZExsPJqok+RTUwE1czJp4WQtUMPPbySYyH\nkxlixC2L6OsJ4Jbd/WVdOx9uWYTfI8Eli/M+FzF/SGQQBEFUgUoKKbvavBgajWSkNFTNQFIxcFKI\nwOuWSu76GBgM4adPv+uIlbGpBAyDozVgpVMSio5o6rGAV8bAYGheoq+cwk7T5Hjj+DieOXQaM3HN\nOS6JDC1+Nzwusaz21ny4ZREBr5wxr4RoPCQyCIIgqkAlhZS7t6zAwOBkxjHT5BAFK5qR3gExV9fH\nYy8P5dRfmJxjOmo5ZIbTHpNFYV7tquUUdr5/dhqP7x/CSCjuHBMYQ9BvDRuzizorbU31uCxxUY36\nDaL6kMggCIKoApUUUm7u70TQJ1sj21OpEpNzCALLmWkyV9fH8Hg055jAGBhL+Wgwq9U16JWdWSfl\ntquWWtgJABPhBJ44cArvDGWaaV20tgPnphI5k0wLzRAphNclwk/ioukhkUEQBFEFKi2kXNMTzBAn\n42ErzZF986y060MUGFr9LgR9rpzHSm1XLaewM57U8OzrZ3Agy0zrkg3LcMNlq9EWcDvdJcVmiOSD\nwYpckLhYOJDIIAiCqAKVFlJmi5OgV0Y4quZ0WMwlVnq7/BgcicA0ueX2mTLj6m73zKtdVdEMREqY\nN6IbJl45YplppddprF0exEd2rUFvV8A5VmyGSD4YAI9bgt8jkbhYYJDIIAiCqBKVFFLmsxf/UH8n\njg2GyhIrN12+Fv/y2DuIxFRwWAJDEBg0naO3O5BXZBQTLqbJEUnMPW+Ec463T07hyQOnEJqZjYx0\ntLixZ3sfNs3DTIvExcKHRAZBEESDyRYnpcwuyXeO5e0+aLrp1HfY9RfD56K4/ep1JUdZEoqOSFzF\nXF2pw+NRPL5/CCdHZ9fqcYm4bmsvdm7qqVgYkLhYPJDIIAiCaBJsM6+pqIr2gKts3wpVN0r0xUg4\nLbfp5zdMEzMxDYpmFK2bCEcVPHPoNN44PuG8VmDAjouW47pLV8HvqcxMi8TF4oNEBkEQRBWpZHz6\nwGAIj708hMHRGUiigLaAC6pmlN1mWqj2wiUx3PfT153zB7wyzCz/jVhSQzTVlnp8OIxH9w4iltRh\nmCYmppM4OxHDh3euwZnxGF46fBa6MRvm2NjXjj07+9CdR+CUAoPl5eH3ShAFEheLCRIZBEEQVaIS\n10/7NePhBMAtf4vQtILWgMuxAM929dx7eARDYxFouglZErCmx7IUz9fhklB0JBUgktCc89ueGV63\nhBffPIvlHb4M0fD862cwE1Odn3XdQDhi4D9/dTzD2XNFpw8f2bkG61e1VrRfjKXEhYfExWKFRAZB\nEESVqMT1035Nti+GbcaV3mZqC5KEomeYa4Fbgub2q9dl1F64JIbJaR2Kbjij4G1/ikhchUsWMDoZ\nzxAYADA6OWucZXIOZ2mpltSgT8aHLluNSzZ05fhdlILAAJ9Hhs8jQajChFWieSGRQRDEkqSStMZc\nVOL6ab9GEgXo+qzQsEVHepupLUiiCQ3pRBIaPKmox+dv3YzN/Z2OIFF0A7a5hR2FsAy6OEwT6GzJ\n77TJU+Iiu/bzuq2rcOXFK+GuYDaIIDAEPBK8aU6fxOKGRAZBEEuOStIahc6TLlRckoikljvLo5gf\nhV1HEfTKGbbgduFjepupLUiyox72z+lixhYktnixXEQ5DJNDEpmTnsh22owlNciSgETWTBLGgN5l\nPly/bXXB91IIS1zI8LpFEhdLDEqCEQSx5CiW1igVW6iMTSVgptIVU1EFyTy+EsX8KOzHPG4J7UE3\nJEkAGLC6y4/br17niJ6BwRCmYypGQjEYBoeZVhthC5J0MWMLkmDK1IsBcBo2GLCiw4sbt692OkZ0\nw8RLh8/i//7ZmxlDzBissentQTeuv6yv5P0BLHHR4pPR1eqBz0PRi6UIRTIIglhyVJLWyCZdkKSP\nanfLItqCbqiaCZcsAJzj4RdPYO/hkbwpmXxmXDdduR6rO2Y7NWxBI4sCkHLyNFJ1FILAHCGRLmbs\nCInbJaLF77JSLKaJgFfCb1+93hEXnHMMDE7iyQOnMiIpQZ+M9qAbhmGio8VTsvW3vSZKixAAiQyC\nIJYg87HZtrGFSlLRM27OimYgqRq49IIuvHZs3DleLCUzlxmXLWg8bgntsGowVJgQGNDR4kFfTyBH\nwOzesgL/57n3YZocLllER6q1Pj+HAAAgAElEQVSGIj16cfqcZaY1NDZ7La/bMtPqbPXgjXfHM97b\nXEgCg98rw+OitAhhQSKDIIglR293AAODk44zZsArw+uW5pwPko4tVCJpRZgm5+AmMBKK4Zf7YmgP\nup2JpzblTj4FMiMvHrfknFNgDHf/0TanNuThF0+gq82LnZt60NsVwA3bevMaaoWjCp4+eBpvvjeR\ncZ2AV8Lq7gBU3cCvXh12jodmFDx18DQA5I1mSCKD3yNnjKYnCIBEBkEQS4yBwRBeOzaOoFd2UhzR\nhFZ2d4ntSWEXXZqcwzA4RIEBHNAM07q5AxlCo5yUjE2xyEt6ESvnHGdDMfz38yeciEW6KFBUA08f\nPIW9vxnJaFv1pFIqkihgOqZh8K0R+DwSPK7MW8SrR89lnE9OCTS3q/xOE2JpQCKDIIglRXrqIf3m\nP3wuWtZ5bEHy708ctZwyTWusuu0bYfs/hKMKxJSYkUQBq7v8Za+52Bh5+/2YJs8wykoXBKbJ8dqx\nc3jm1eGM9teVnT64XSIULbNbxTBNxJN6jsiwUycuSYDfK1fUxkosLUhkEASxpKhG0afN5v5OfObD\nG/HQCydwZjxq3eh1DsYsEaOqBgzOIafu/bpuIhxVMTAYKitqUmyM/P+88D50g9s+WQ62IDg+HMYT\nr5zKMNhq8cn40PY+BLwS/uvZ96CbJkRBcKIXoiDAMDOFBwAsa/WgI+iGi8QFUSIkMgiCWFLkSz0k\nFR2aYeLv/+NQ2cZcm/s7cXI0guFz0YwR67puggkMggmAIWMqaiV1GfnGyMeSGlr8LkxM5xZnet0S\n/uOJozh2OuwckyUBV128ElduWYGhsQieOnjaMtvigGGYiKSsxP0eCbHkbCuu/Z6uu7SXBAZRFiQy\nCIJYUmSnHuzukLag2/G7KNeYa/hcFMtaPTmdGIZhoqvNm1P8WSxqMjAYwqEnj2F4bKag4FE1AzNx\nFbrBcekF3U5RJmC5ekbilp+GHd1gALae34UbLluNFr8LgJVOASxBkT6nJJ7U0dHiwdYLujA+lcBU\nVEVPe3UcUYmlB4kMgiCWFNmpB80w0RZ053RGFIs2ZDt9Do1FMtpL7foLQWA5AgMo3Crr+GFIQl7B\nY5ockYSGRJrhl113cfDtMQyPRxGJ6zDTcifrVrbgIzvXYOWyzFoQWxC5XRJaAGfiKgNw8+VrcOn5\n3ZAl8msk5geJDIIglhzpqYe//49DMLMHdKBwtCGfJXkkbk04zS4m9cgCklpubUOhVtliTqTrVrQi\nmlBx7HQ4oy310gu6kFQNnA3FMR2bLepc1urBh3euwca+tryeFe1BN0Izs0LD7ZLAGLCiw4edFy3P\nuw6CKJe6iwzDMPC1r30Ng4ODEEUR3/rWt8A5x1133QXGGDZs2IB7770XAo39JQiiDqTXaCQUHdFU\nJCLglfMWaD728kmMhxMZHhuBVDtsusBIKDo8shtJVYemm3BJYl7TrHTyFaVyzjESimMmruL4cDgj\nNTISiuOnzxyHljZYzeuW8FuXrsKOi3qKjk/ftnE2zcKY1RnDGMNVH1xZwq4RRGnUXWQ899xzAICf\n/exnOHDggCMy7rjjDuzYsQP33HMPnn32Wdxwww31XhpBEEuE9HSHSxKd9EP6+HRZFHJqMwYGQxgc\njTijSXXdRDhVzxH0udDT7nVGrCcVq311Nn1ioLc7kFdg2Os5N5UAB9AWsDwrTJ45KdWuo9BTRZrp\nQ8xEgWHXpuW4duuqkkyxNvS2wSUJeO3dcYSmlYyOFYKoFnUXGddffz2uueYaAMDZs2exbNkyPP/8\n89i+fTsA4KqrrsK+fftIZBDEIqQW49UrWUNG4admgMEqeMzuAgEyazP2Hh7JGckOWKPXN/d34PO3\nbgYAPPDIAMJRNaMQVNdNPHngFNYuD2aIlsdePonB0QgkUYBLEhBP6pgIJxH0yXCnfCrsSamh6SRm\n4lrOqHevS8Rf3PYBdLaWZovudYnwe2Us7/BhB6VGiBrSkJoMSZLw5S9/Gc888wy++93v4rnnnnNy\nhn6/H5FIpOjr29t9kKSl1UbV1RVs9BIWFbSf1WeuPX392Dk8uu8kAEAUBUxGFDy67yRaW33YekF3\n0ddWk0NPHoOmm5iJqdB0E7IkWB0XDOjryX0P4ZjqvLepqIq2gBuh6cx6DcPguOnK9RnPiyX1nFoI\nw+B49dgErt2+1tmP0VAcDAyGwRHXdfg8MtTU/JP+la3YtWUlNq5tx763zuJcOJHh1OmSBLQF3ejr\nCWLDHGKNAfB6JAR9Lmdq61KCfuerTyl72rDCz/vuuw9f/OIX8bu/+7tQlFm1H4vF0NLSUvS1U1Px\noo8vNrKHJRHzg/az+pSyp4+99H5G7UD68fSJo7Xm3VOTmJqZ/ZujagYmwgkIAsu7vp52r/Pe2gMu\nqJqBtoAro4tkdXcAqzsynzc0OuOkVWwkScDpsQjGxyPOfqi6AZ5WeZpUdXS3e2GaHL991Tq8ezqM\n/+v/fQXn0rw9rBHqLnjd1iCyD6zrwORkLO/7ZbAKUv0eCXqSYyqp5X3eYoZ+56tP9p4WEhx1Fxk/\n//nPMTY2hj/7sz+D1+sFYwybN2/GgQMHsGPHDrz44ovYuXNnvZdFEESNqabTZqnkS8/kExKAVfyY\nXtBpp0zSO0F2b1mBnz79bobACHpl3LRrTca5dm9ZYQ1gy7pWwCs77av2fogCg54mMmynTc45/uHB\n1zJSIy5JwKZ1HVBVA9MxNWPoWc77gRW58HukogWgBFFL6i4yPvShD+ErX/kKPvWpT0HXdXz1q1/F\n+vXrcffdd+M73/kO1q1bhxtvvLHeyyIIosZUY7x6OeRrNX3ohRMZHhI2pslhcqCjxeV0l0QSGq7I\nUzOS/eo83a/Y3N+JPTv68OSBUwUnvS5r9WAkFIfXLSGiz5phCYxhfCqRUdQJAD63hI9esRYXn7es\n6PtmzHqu3yM7c1QIolEwzvP8xjU5Sy3sRaG+6kL7WX1K2dPsm77N7Vevq1rxZ3rkYjqmQhaFHDOs\nSFyFJAqOmJBEwZqeKjJ0tVlpG7uVlQHY1N/hFKg+8MhAXqHU0+51ij7zrydz3kg8qeG1d8edFtKk\nqiOW0KAZJjhHxhwSlyyg1e+CaXLohomgz5U3gkHiojD0O199mjZdQhDE0qTYkK9qkC1iognLICt7\n1LpLEuF2iRltniOhGIJey247oeizrawMODkawcDgJII+GdG4Bn8qIpHO3CkfSzVouomJaat40xYI\nh94Zw9kJHSYH0meSSSJDi98FtyxaNuIxFWCA3+tCaEZxBMr5q9tIXBBNC4kMgiDqRr4hX9Ui2y3T\nbjXNNsmyDbHSxY5HFpHUDExHFUxHVScFIgrMERyRuFUbYf+cLjTypXzSRQ/nHGcnYnjohRO4cftq\nR2C4JBHTMQ2Taa2uPreEzjaPNWAt1Z1iDyvLrq148/gErti8gsQF0bSQyCAIYkGSd36Ia/ZPWsAr\nIxxRoBuZxZd29CRd7AwMhvCvj72TITAAa9gYB4ckCNANE+0BN6YiCqIJLUNk5LMJf+zlkzg3FYdu\nZI5Rf/XoOXS2ePDkwVMYODHpPF8UGC7fvBzXXLIK4YSOh359PG0d1nvweaxrCoJVuxGOqiQwiKaG\nRAZBLECawdSqkRSaH8L5bITB/n/dMCEwVjQ9s7m/E4bBwVhmPQSQSmEIVmTE45bg0wxE4hpGQzH4\nvTKuuWRVzjkHBkM4MTLbwmqPUTc5x8yIiv/n/7wFI62jZFN/B/bs6ENnixURWbWiFdFo0plR4nNL\nEEVLqAiMORGOWhXNEkS1IJFBEAuMQl0TQOmjyRc6+QaJBVPzQ9IjDF63VHJhqaIbEAQG08jTfcI5\ngl4ZSUVHPKnD7RKdItHXjo1nuHiaJsevXx+GKAgwjNl2VJMD4Yiacd7eLj8+smsN1i7P9Qba0NuG\nDb1tYAw4NRbBY/uHcsy9Cg1aI4hmgURGiqX+zZBYOBSb1LlUPrP5PDc8bgmMMWd+SLmFpXZ6hSG3\nLVVMRTHGwwmYnMMwTIyEYk5rqr338aSOaELFRDgJWRKQzGpDtfF7JNx0+VpsWd8JIc+EVAAQGODz\nyPB5JPS0++B1SzUrmiWIWkEiA/TNkFhYNMLUqtko5LnR1xPI20paCtdcsgoPv2j93qff9p06CMas\nFEdai6k9IO0kgMmZJNSU+ZYsMiQKOGsGfdbUVn8q9ZGNwIAWvwsSNzMer2XRLEHUChIZoG+GxMKi\n3qZWtWC+kcPdW1bk9dwoNX2Q7/o371qLg2+PYSQUh8k5BMYQ9MloDbgdH4wv/mAfovFZ8WDbDCmq\n7giMSFzFxLSCfMaiksgQ9Fmtsq8ePZfhcyEIDH6PBJ/bmi+SjCm5JyCIBQaJDNA3Q2JhMd8bbKOZ\nK3JYigCZj+dGsev/7nXnFd1bWZptIU33MZQlEZpuYu/hEbzw1hmoWq7CEAXLMMvGntAqCAwBjwRv\nKt1DEIsJEhlYHN8MiaVDrU2tak2xyCGAklOXlaYPil3fTrUU2ts1PUFwk2MmoVkuoYIAn1uExyXi\nO//1JqZjs4WdtplWLKHBTHWSpPtcdLZ4cGY8ioPvjGFiOkm1YMSihEQGFv43Q2LpsZDz88Uih/VI\nXZYeucztMtm2sQvD4zF0BEUAgKIZmIoomEzrGpElAdsu6MLJ0QgYY2CA5daJ2foOUWDweyX82xNH\nHWvzWFJ3vuxcS2PJiUUCiQws/G+GxNJjIXdDFYsc1iJ1mb1XLklAMk86o6vNUzCVohsmersC6O0K\n4sbtq7HvNyM4PRbNGWImMICbJgI+GXt29KV8LqxCTgbAMIGeDi96uwPW8LRU4YZdQApYf4eu3b62\n4vdLEM0EiYwUC/mbIbG0WOjdUMUih3sPj1Q1dZlvr5KKDg7kzB+xr58O5xymyfHc62fw+9efj4HB\nEJ4+eBoT05mihzFAZHBqKg6+PYZrP9WLDb1tkEUBfq+U4Ub6wCMDOU6kgDVvhWrBiMUEiQyCWGAs\n9G6ouSKH1Uxd5tsrj1uCxyWi1e/Kub7dwgpYplq2K+fkTBKP7D2Bg++cy3EEFWClP9KJKzpckgC/\nR4bbJeasYTyccGarpKMbJtWCEYsKEhkEscBYDN1QhSKH1U5dFtorVTPz+ml0tXkxMhmHafLUyHUO\nRTMQS2g4MxF3nicKVlFnOKLkqdywjL06WgqLha42L+JJ3ekwsZFEgWrBiEUFiQyCWGAs9m6oaqYu\ny9kr0+S4ZMMyDL88BADQdAPTMTWjHZUxS0AEvDIYY9AN05nOOvschmu39hZd1+4tKzA2lUA7gEhC\nc4o/9+zoWxDRKIIoFRIZBLHAoG6o0il1r+JJDZGEhjXLW3DlluV4+tBpTKV1jDAGtAfckGUxIzUS\n9LkQ8MpIqtZME3tg2s271hZdFxWbE0sFEhkEscBYDDeoQt0x1e6amWuv7GiFbnComoGXDo/gpbfO\nOu6dAHD+6lZ8eMcazMRVPHXwtHNcYJaR1u9cc15Fa6Ric2IpwDjPLmNqfsbHI41eQl3p6gouufdc\nS2g/q0+hPc0nGgCruDOh6IgmNKiaAc4Bj1sE59Y0VU9a58dcU1TtawyNRaDpJmRJwJqeYI5ASV/L\nslYPtl7QhTU9LTA5x5vHJ/D0odOOnwVgmWn1dvlx7dZex/77+HAYbx6fwFREQXe71Yo6fC5a9Vbi\n9P1cyO3KzQL9zlef7D3tKuDtUpLImJ6exv33349Tp07hu9/9Lu677z7cddddaG1trd6Ky2CpfVjo\nF6S60H5Wn3x7mt0+auORBUxFVYQjSmqiqfUniMO6sQuMoT3odoTGbCdI7k3WvkZSmS2iNDmHKDBw\nAP3Lg7jp8rUAZrtW7K6RpGp1gIRmFGhpkQuBAUG/C740m+8bt6/GxectQ8AjQ0ilSwq9v2xRVIlI\nsPez1GsQxaHf+epTqsgoKV1y991344orrsDhw4fh8/nQ3d2Nv/3bv8WPfvSj6qyWIIgFQ76bZj6H\nykKttsPjMacjwzR5RneGbnBIolUM6XFLSCo6RkIxtAXciCY0nJmIYWBwEnt29OHmXWvx2MtDGA9b\n3hc2JrfOIzDg5GgED71wAh5ZAOeWuOAciCU1zETVnM6QVr8Mr3tWSACAIAADJ0K4csvKkt5feivx\nfD1NFnq7MkGUJDKGh4fxiU98Av/5n/8Jl8uFO++8E7fcckut10YQRBOQLipckoipqOIYWdk3zdZW\nH1Z3eDOe/+Z7E5BEAQGvnGN8ZRtRmXniqIbBoSI10TShgYFZUQ+Tw+QcmmbikZcGMTYZx+DojDV6\nHcjxrzA5oGgmwpEkInENYipKYnJkRC4AwOsWEfS5EImpEEUD8aQOw7Q6PoI+FyamcyeiltJKPF+R\nsBjalYmlTUkiQxRFRCIRJ3R48uRJCGmDfgiCWJxkfxM/PR6FrptQNAOabjqtl//fr97F//rdizEw\nGMJPn37XasvUTei6iaSqQxZFcHBIooCOoBuTESXHiCodO4urGyYYMo2xACsl8sqRMUiiAA4OhnyT\nRiymY6kWU4NDy5MdFgXA55YgiQIM00QkVZfBGINhcIQjCtoDrpzXldIeO1+RsNjblYnFT0lK4Qtf\n+AI+/elP4+zZs/iLv/gLfPKTn8Qdd9xR67URBNFgsr+J64YJk3NEYqolErg1d+P4cBgDgyE89vIQ\nplICQhCsqIFpAqpuOM+NJjT43GKOrTaDVQ/BUvbcHpcItyxC1U3oWWkVBkto2NKilBHp+aImgLW+\nyRkFU5EkBIFZQ82yz5fn/IVahtOPd7V58z6nVJFQyjUIopkpKZJx1VVXYfPmzTh8+DAMw8DXv/51\nLFu2rNZrIwiiwWR/E5dEAUldz0lNyKKAvYdHMDwenT2Y9hyeqpNgzJpIKksClrV5EZpOwjC50w7q\nkkUEvDLaAy4kVQNet4RYQnNOxZESIwID54BhWkWeRiEFUQTGrHXZr1RUAwBLnc8SQLIsos3vwnRU\nxQOPDOQt3izWSlyqT0d2nctNV67H6g7vomhXJpY2JYmMV155Bf/8z/+Mn/3sZzhx4gQ+8YlP4P77\n78fWrVtrvT6CWJQ0c1ti+tqmYypkUXA6PYJeGQlFz/li35KaA2KTnd4ArBQIBwAOx4diWasHUxEF\nkiRkfeu3LuB1SwimbvJZD8HjFpFI6oXzJFmIArOiJABEUbBaZ7OeY3IObnLIohXk5aZlK67qppO2\nsOtQTo5G5mxfLUUk5CsOffDxt3HLFWsdL41m+WwQRLmU1MJ622234b777sP5558PAHj//ffxpS99\nCQ899FDNF5iPpdaKRO1X1aXR+9nMbYnZa0soulWTkNZSOhqKA+CpllMBQa+MoN+FjqAb01EFgyMR\n6IaZESUA4NRNMFhRBI9bQlebF8mUX0Z3u8+5CT/84gmYHEgqOsJRBYqW2WIqCAyiIEASGeJJfU6d\nIQlWSsU0OZCyBndqNfLgkmYzyYbJ0dnqyShetT0+stMhlfwbPvDIQEbdRVLREUvq4JxjU39HUwnQ\nhUqjf+cXI6W2sJZUk6EoiiMwAGD9+vXQdb3IKwiCKESxjoNGY68hoegYDycQjipgzJoqKjCGnnYv\nbrp8DZZ3+tEecAMApqIKRkNx9HYHcNPla9EWtI6DOUGHDDjgCIikosPjlrCpvwN3/9E2Z9z6uakE\nRkNxhGaS0HQz4zx2WoVzEwbnEIv8FWMAOlrckCTRilIAEBhDQjFynpeOkepkkSQBjOWOhY+m5o0U\n2r9ySE9J2X4fmm5CM0wnajIwGCr7vATRDJSULlm3bh3uv/9+3HrrrWCM4Ze//CXWrl1b46UtPpo5\nRE7Uj0o7Dkr5/Mz3MzYeTjjRCxsOIKEYcEnMWXtvlx9vHJ9IdX9Yg8J++fJJdLd54ZIEq3CSc8iy\nAJMDhmFmFF7aN/WpiAKfZsAji/jKj/YjEtcQ8Mrwe2VMhBNONITBTnMwyJLVoTI2FUcySyxkw5Hq\nHBEYJmdMcHDoJgdLi31kd6YwzI5uD3hl6HlGtdtdNbn7V35raXoHSSQxG11JPz/5YhALlZIiGd/8\n5jcRj8fxN3/zN/jSl76EeDyOb3zjG7Ve26LCDkOPTSVgctA3lCVMJR0HpXx+qvEZ62rzIprITCOY\nnMM0TZwejznnfeP4BIJeGW0BNwzThKpZ/xsej2F0Mo6gT7baSzng81jtoQKzHD0l0Qpx8JRfxUxc\nQziqIBLXoKoGJsIJTM4kc1IgHFbxaFIxMBlRoOmlFWNMRRRMTCehm9wSOlkvy64vEcXZA9GEhmsu\nWZVzTjtNlLt/5beWpheBpkdHAmnnJ18MYqFSUiSjtbUV9957b63Xsqgh5z7CppIpqo+9fBLj4YTz\nDdo2uEr//Mz3MzYwGMJ0VLEKO2GlJYRUHYMgsIwboG6YiCQ0GEbKFjztRq0bHDNxDUJKSCiqge52\nD86GEjBMDgYGBkCShFTtBrfaXk0TPHUJ05z1vrC7QGw4gHiy9HRtLOu59jlZKkTicUvOe/a6JeiG\n6Zh1CQLD2uVBrF0exN7DIzg1FoWqG3DJghN1SJ+zUklrafq/30Q4AQ6gLeCCLM1GUMgXg1ioFBUZ\nt912Gx5++GFs3Lgxo2+ccw7GGN55552aL3CxQM59hE25bYkDgyEMjkacb+C6bjrpjPTPT6mfsbmG\nljEwK3phpNIKqV/99PC9JFoCQddNp2MkHdO06hnArGjFeFgBeEo4pBSDmbL4tv+08LQSBw4rZaEb\nVr5EYIV9LoqRz6SLpS4gilYbbE+7D9MxxXl/4cjsfwsCw0MvnMDtV69zxKE7lT5JKLrlSMoY+noC\n80p/2h0kdjRKloQMV1LyxSAWKkVFxsMPPwwA+PnPf46NGzfWZUGLFXLuI9Ippy1x7+ER66ae5ZAZ\nTWhYu3y2oruUz1h690hC0TE2OIk335uAWxIhiMxqCU27Ldv1EIbBIXtnRUbAKyOa0HLsubMxnXkh\nBgTBctDkaY+xVKdI+rXsH2xzLpNXJjDscwoMOUKIc6sAtH9VC778ya345f6TePLAKWcGisAYBIE5\nKZF8USKvW4LXLaGn3YvP37q5sgVmYX8mXj02gdNjEfLFIBY8JdVk3HnnnbVex6KHnPuIShkPJ/Lm\n/3XDzPj8lPIZS+8eCdvW3qmBYZGYarV4ZsGYZVCVLii8bgl7dvRBLOK0aXJuRSIwO7Qs++wtfheE\n1DlEgcGeVmA7b6YPKqsUzq3IiyhaPhlICZv2oBs37VqDgcEQXjs27uwxT63d55GcVMh4OFm3aOTm\n/k787ae34e4/2obP37qZBAaxoCmpJuO8887D97//fVx88cXweGa/FV122WU1W9hig5z7GkOpE0Ob\nGTtC0Q6r+8Cuy1jdHcj4/JTyGbNvlNnFncDszTVbZzAAna0eRBMaBMYyzrvvNyMIhZMweZrZVop8\ngiUdURTQGnDDJYuIxFV4PRIU1YDHJULRTCSU6rTJ89Ragj7Zsig3TGcE/Ob+Ttz309edehfGmOXD\nwZhjGAbMRoOKRYrm6uyh7jKiUTTys1eSGdenP/3p3Bcyhh//+Mc1WdRcLDVTFTKSqYxCplefvWWz\nMzF0IVCpeVf2H5be7gCef+OM5fGgm05KAACYwKBpRsG0hN8rYdPajoxzBLwyBAZE4noqysEhCtbA\nMs6tyISWMuUqhNslQhatOSXd7T4kVB0nRyIZr7GDGZWmTAQBAAdcsogt6zsz/sAODIbw/f/5jZNK\nMblVyCqK1t6s6PQDsPYaQMF/h2KPpddaFHo8G/qdry5LeT9rZf5XqhlXSZGMBx98sOKFEESjKNRt\n8ezBU/jMngvqvJrKqSQKlv2HZWg0gjePT8DnkZwbqm37LQgMbX4XFM1AON2+O41YwnK4/OW+k86x\nmagKPTU7RJYEp6DT75GRVA2r5gLFXb9Nw0RSt0TJ0aFwauiZhcdlzTGZnEmCMUBkQB7/q6JIqfHu\ngCV6smsnsutdBMYA0UqxyKKAnvbcb335/h0eeGQg7/Xtzh7qLiMaRaM/e0VFxvHjx3H33Xfj+PHj\nuOSSS/D1r38dK1eurPmiCKIaFMqhj07G6ryS+VPu/IrsPyx2u6Wqm2gPuhGOqlB1a3aHbRnucUuY\niaswC9zI3z1liQCeqtDkaWJFTmkXSRTQ0+FDq9+FsakERkIxqFphZaClajb0rDZTSWTwuq27PU8V\nfjKGnGFo2e2t5TIeTiDglTPMxwTGAAH4s1s35Z1Fku/fYa56DeouIxpFoz97RQs/7733Xtx88834\n2c9+hk2bNuHb3/52XRZFENWgkOnV8g5/nVdSf7L/sNgeF7phwuOWsLzTh+42LzwuET6PjJ52L26/\neh3aAm5niFj6/wQGa9x6yoEz+8auaqZTg3FuKoHpqIKRUAxGavJquegGx3RUxVREcdw37amrVkcK\n0N3uhZyy/S5Eel1Ib3cg5/GuNi+8bgltQbfTcitJAvqXB8sSdXMZrM135DtBVEqjP3tFRUY0GsUf\n/MEfYMOGDbjzzjvx/vvv12VRBFENCnVb/Nb2vjqvpP5k/2GxfR/SvS7SZ4Z8/tbNODkaQULRZ4VE\n2utFUcg7h8SGw2pVTaRmb5wcjcDrlhzXz0owOZAdA2GposwWnwvtARdkUYBLtnwrbEGU/lwOSzTY\nnSTZ2J8Rb2pY24pOvzVq/fK1AKy00wOPDODv/+MQHnhkoKB76lydPdRdRjSKRn/2iqZLJCnzYVnO\nbaMjiGalUC3D1gu6614EVuvq7nxFnumdEEGvjKmIkmFVDcz+ofnl/pNOvUV6CsI2xeKcw+eVEE8U\n6PjImriq6SY41+Fxi1C04vNFisE5YII7k1sl0Yo2tAbcaA24cdPla/HQCycwGopDS6V/BMy6cDKg\n6CTTYvUu+Uaw2z+XO9KdusuIRtHoz15RkZHdeMIqiXsSRAMpt5ahFpRzs6rW+cemErj0gi4Mn4ti\nPJzEmuVBXLFlhfNz9sRJU1AAACAASURBVB+a5984AwCzNRdp2DUQegGBkc+N0+RW/Yc6h1lXKaSf\nWzOsrpikomM8nHTW/9j+IQyOzGRYrgOlVdAX+oyUWzA312etGT6LxNKkkZ+9oiLjnXfewYUXXghg\nVnBceOGFZCtOEGVQ6+ruQucfPhct2YnS9s0wjPJyG7JkpVHsm79RaZ9pKaROzQRr6Jk9Uj7dkrua\n39YaXTBHEIuBoiLj6NGj9VoHQSxaSrlZzSedUsnNMPt6blmEohpF203zoemmk14xKii+EJjl+hlL\n6nktyv0ea3iZ3V1iD20DkFN9Ote3tXL3mEYBEMT8KcknAwB+8Ytf4L333sPnP/95PPXUU/jYxz5W\n9sU0TcNXv/pVnDlzBqqq4s///M9x3nnn4a677gJjDBs2bMC9994LQSjJ7Zwgmp6BwRCmYyqiCc0Z\nD27XC6Q7Rc4nnVLoZuiSGB54ZCDnpmrP6bCdQ+NJHSbnc84hKcR8WkgBSzj0tFsj5tN9OgQGJFPC\nhwGQJREc3EmJqCWOegcq2+NKpuUSBJFJSSLjn/7pnzA6OoojR47gT/7kT/DQQw/h6NGjuOuuu8q6\n2KOPPoq2tjbcf//9mJqawm233YaNGzfijjvuwI4dO3DPPffg2WefxQ033FDRmyGIZsK+sUmiAHBr\neupUREE7rMJE+2Y133RKvpthQtGRVIBkyqNibCqBnz79LmRJwJmJmCMMdN1EUrUmr87pnFUDGGNI\nqgbCUcVyIE2r7zBTvbJ20Sfn3PH0AEqLKNjRiyODk+BAhsgDiu9xowvmCGIxUJLI2Lt3Lx5++GHc\ndtttCAaD+Ld/+zfccsstZYuMPXv24MYbb3R+FkURR44cwfbt2wEAV111Ffbt20cig1gU2OLBLkKM\nJjSomoHQTBKSKOCHjxxBb5cf4ZgKjyv3V7HU3H++m+F0VEUyrasjmWot1Y3Mwk7T6VXlRVtUa4Vp\ncqiaAdO0ukjywWGJDJNzTEwnIYoMkijg0gu6ip47PXqhGdYguHSRB8y9x1SsSRDzoySRYacv7O4S\nVVUrSmn4/ZYJUjQaxV//9V/jjjvuwH333eec1+/3IxKZu7Wwvd0HSRLLvv5CppAvPFEZ9djPqagK\nWbJ+T2TJBUlkGA8noRsmRMEynDo5GrWcLFsYfJ7M9tKVywIF1/n6sXP41cFTGA3FsLzTj+u39+Hu\nP9nlPP6//vkFaLqJmZgKTTdhmNbwL7NIbqPOQQxL1DAUdBi1kSUB3Jyd6MoY4PGKOPx+CBdf0IOt\nF3Tnfd2hJ485+++SRCcdFEvqCPpdAIrvcaNp1nUtVGg/q08pe1qSyNizZw/uuOMOTE9P49///d/x\n6KOP4uabb65oUSMjI/jLv/xLfPKTn8RHP/pR3H///c5jsVgMLS0tc55jaipe0bUXKkt5uE8tqNd+\ntgdcGbUS4agKI+W8aXs6MFhGV+GoCjlLOG+7YFnedWbXF5wancG/PjqA6bRhXKMTMUSTWirVYHd9\nVCYjGID2Fjcica2sug17bojJLaOubH3DATAOcFZ8Xdzk0M3ZtInAGKJxq8blsZfeLzjsbnhsxkm9\n+DySYx2u6obzPgrtcaOh3/nqQvtZfao6IO1zn/scXnrpJaxcuRIjIyP4whe+gGuvvbbsRU1MTOCz\nn/0s7rnnHuzaZX3ruuiii3DgwAHs2LEDL774Inbu3Fn2eQmiGcmuldANM8dPgsOqiwh4LWvvUnL/\nxWo4AGsaqKobgO2YOd/KTACxROkCw7YlF0UrAlFM29jmWUWHqKWt354aC1jpp0LpjuyC24BXRlvQ\njWjCEl75Bp8RBFF9ioqMQ4cOOf/t8Xhw3XXXZTx22WWXlXWxBx54ADMzM/jBD36AH/zgBwCAv/u7\nv8M3vvENfOc738G6desyajYIYiGTXSsR8MoI62oekzvrf6V6WhRrWbWFhu3Uqc/hW1FKrScHoBQZ\ncpbzfG6NjpcEBpdbwkzM6hgpNMxMlkSouuFEPfJFPKzWVcy2r8ISbfmKP+1Ij5xWcBtO+Wp0tXnn\nPeKaIIjSKSoyvvvd7xZ8jDGGH//4x2Vd7Gtf+xq+9rWv5Rz/yU9+UtZ5CGKhkF44ODAYwnf/+zCM\nLJdtgTG4yqgxKubfYAsQSRSgcxMsNYjETs2k378lkcElizAMsywRUQoM1kCy8XACosjAde5EIUyT\nW8KBMTDGcPF5nTg7EcW5qSREWELDfk7AK2Nlpx/hqIKptEmp9nvM105qCy2PW0I7rAm0umFCN0wS\nGARRZ4qKjAcffLBe6yCIRc/m/k6sX9mCk6NRaLqlNGRJQFvAjb6e3Amhhdi9ZQV+8vS7iKZunnY6\nYPeWFdh7eARjU9b48snpZEZUgAOQBJYqtuTobPHA7RIRT+rQI0kY1dUZmIoolpOoPRLe4E5nCBiw\notOPnnYvPn/rZgwMhpz3pGoGWKqddWWnH5vWdeC1Y+MZgkESBezZ0Zch4GyjrXOp92+Pr7c7SQTG\nSGAQRJ0pqSbjzTffxA9/+EPE43FwzmGaJs6ePYtf//rXtV4fQSwq7IFe2ZRr8JTdbmr/nFEHwvKn\nKATGILsETM4kAQa4RBEtPhkzca1qQsPnkeB1S5YQ0k0IAoNhWBEKwRYayHzf7QE3ZmIqTJM74iup\nGXjt2HjGHJbsmpXsQliOzFbVpKIjkqrFeOCRAarFIIg6UlIf6le/+lVcf/31MAwDn/rUp9DT04Pr\nr7++1msjiEXH5v5O3H71OvS0eyEwy+my3BD+3sMj8GSNJve4JTz28knsPTyCpKo7nRQuWcwQJIbJ\n4XaJ0HUTYECLzwVF0zEd03KKUitFYJbIAACXJEA3TKu7JTV6HQxY3eV33rctEpKaAUFgznj49OXY\nc1huu6ofAPDwiyec0evZhbD2pNlIQpv1B9FN+L2y4/RZaGQ7QRDVpaRIhsvlwu23344zZ86gpaUF\n//iP/4iPfvSjtV4bsQip9cjzhcB8DZ7yFX4mFB0jIQUrOk3L2IspAAeMtNkigHXjTqpWqkYUBMzE\nNVRhUKoDA7Br83Jouomh0QjiST2joFMQGG6+fC1u3rXWeU26SNDTQinRhOYYmY2HkwWtwZOq7piZ\nJRQd0YQGk3MoqgHT5JCkzMms9jWX2ueOIBpBSSLD7XYjHA6jv78fb731Fnbt2gUju3qNIOag1iPP\na02zCKR8hZ92q6aNJApI6nrqxo7ZCaawui1EATAME1rW1FWvW0RCmft3mwFwyQJ0OwUiMLQGXLjm\nklW4eddaDAyGMDA4CSDVGZKKp3g9Ep5/4wzeeHfc2cOhsQgicavWwjC444WRLji62jw5EQtbUCiq\nAbdLhCwJSCStcfQCY5BkK4rS4nVlCAyAJqkWo1k+58TioCSR8ZnPfAZ33nknvve97+HjH/84fvGL\nX2Dz5tLa7QjCptYjz2tJMwgk+4//8eFpzMRUMGalQ4JeGbphoj3gdp4b8EiIp91wIXCYpm3PjVT0\nYlZgMGalNtqDHkii5S+Rr91UEICgzwVRsDpiVN2AyTkkUYQoWGmNgcEQNvd3IuiTHfEgicKsCGDW\nOcamEvjJ0+9iOjrb1stYaty8iIyOm91bVuDhF2f3P6HMpoQYY9YMFsWKmthdLEGvjEhCy4iI2NAk\n1fw0w+ecWFzMKTKee+45bN68GXv27MGzzz6Lnp4euN1ufPvb367H+ohFRCUjyZuFRgskp25B0RGJ\nq1b6wQQMQ4dhcHS3eS3zq1T7pyRZ3+wNw6q9kAQBgsycVImNJFq5FMasdtbJmSQ03YBbEqDopiM0\nGACWiohEYipWLvND1S3xEI4oYMywhAKHE2VZ0xPMiLikt9faRBMa0sWOwBggWumdoM+VYZpld87M\nvs7CJVvTbcfDCZicwyWJGYPQpqKZra8ATVItRKM/58Tio2jh57/8y7/g+9//PhRFwbFjx/DFL34R\nN910E1atWpVhB/7/t3fnQVKd5734v2fp7ultNhiGZRZABoRACyABskCyZGEEuja+Wm6k5MbXlVT8\nc37KrUpucm05VZGdSJHtKsuxY1ciJ2WVXbLLlmzLhVNCu2QJEAyLBAiMEAiYBYbZZ5ju6e30OfeP\n0+fM6b17pvf5fv6R5jDd/c6Zhvfp933e5yHKRUtj6vLP1fCpstwBkvGPv16afDorUgMQjkQxPBGI\nHWnVzATOOrsEUdSPq4YiKgKhqBk0NLjt6Gz1oLXJifZWL5rr6xAMK1BjjURULVZUy8gatfQYEUUB\no5MhjE+GMGFpzQ7oyZbGeBMncmP7w+u0xV3TADR6HZBl/Wir3SZhfqMT3/zSZnx511pzcrM+n3Ur\nxXg+QRDMcCUYiWJoPIAxXwgOm4Q6m5h3ou3JCyN4evdJPP7Tw2aSaa0r9/ucak/GlYzdu3fjueee\ng9PpxHe+8x3cddddePDBB6FpGnbu3FmqMVKNSNWS3Lhe6TIVwCoF4x9/o76GdSdDAxAKq3DXaXDI\nAiJR/Qio3lXA6Fuis8l6fYmNqxdAsjQ5fO7Ns3DYJQxPBAFFhRp7jKbFinjF/ivGVjwUSw8W68qE\ncX1oPBhX8bR7wKeXOdc0TAYi0KB3pzUe63TIcVsarU3JAan1+YbHA2brdkA/sioIei+UcCSKQFCB\nJOpbJy6HjGAkv0Jcc3XboNzvc6o9GVcyBEGA06n/Ze/q6sLWrVvN60T5KsTxzXJJFwiVKkBKtwpk\n5bDL8LjsePjuFRi9GorlQ0wHGG6nDSuW1OPWNQshiSLO9o3jl298hB/tPolzfRMIhqNmkJCuW6uq\nafA4bXGBBaCvlihRFYqiYmg8ALus/xuxdtk8bLlhEersEpq8Dj2hM1bmOxBS4HHa4lY2DOnu69pl\n8/DlXWvx/+1aYx7dNVZPREFAvduur9bEjss2eR3mtkm6rYBUsvWHqVXlfp9T7cm4kiFJEq5evYqp\nqSmcPn0at912GwDg0qVLkOWcckaJ4sz2+Ga5JPYhydbErNCMVSBZEhFOceZUlkWoqoYL/ZP47nPH\n41Yv6uwS6t12yJJ+ZBUAzvaN47XDvQhHovAFFQRDCgIhBZIomkdejVbs5kqGoG+VOB0yBOirB3re\nR6zLauz1giEFA2MBMwE0U5nvL+64FkD+99X6+7gy4o998NEwFVKgaZq5iqFBXwVSoiqGx6fHlM1c\n3TYo9/ucak/GSOFLX/oSPv/5z0NRFDzwwANYsGAB9uzZg3/5l3/BI488UqoxElWEcgZIq9qbsH1j\nO1473IuegcmkypxKVMWV0am4azZZRL3bDodt+pRGk9cBWRLwwccjiCgqxmM5FUZFTiWqQpIEM9CQ\nRL1duyt2WkWW9RUMI2Bo9Nhxvn9S77YKvRCXKAqYCip48UA31i6bFzdhpyvzPZP7avw+vv3z93Ch\n/2rcn0WjGgQI5gkUQF/Z+M3b53HxymSsemj6I5qptg0CIQVKVMXjPz1c00c7q/WDAFWmjEHGPffc\ng3Xr1mFsbAzXXqt/4nC73XjiiSewadOmkgyQqJzKXTMgoqh6LYhIFEsX1uMvPrsGZ/vG8fv3+tA9\n4DOTPK27G+46GcsW1+PD7jGMTuifvGVZRL3Lhq03LsW8+jqMXA2a2wzA9KkOVdVXAZwOGYFQ1Dy5\nUeeQ4bBJaPTYEVa0uE+4//t770AUhKTusn2DPgCl2OePf10jYIqqaty2jtdpQzCk4OWuHnP7KV2u\nRWL+kHFktsnrgKrNnRwNotnKuufR2tqK1tZW8+s77rijqAMiKrTEQOHerdegvTl7jkM5k/8iShS+\ngIJQJLkw1oq2RnhddvzH704lHUn1umxo9tpxedhvri5o0AtwKVG9GqggCGhpdOLSsD/usaIgwO6Q\n0Nrkwj/8r5st9y1+2dy4/tt3zmPfif6s7eRnm/CbLdALKyoavQ5M+MJmYqwsiVDU2PFdaTpQMrZO\nEiUe0UzcNlCialx+R7rHEVE8JlZQTUsVKDy75w/43G1Ls04O5agZkCm4AIDJqTBeP9KHI2cG41Yv\nXA4ZXrcNkihicCyot1IXBTOzWxD0UyfG2LfcsAgnL4zqPUwsPE6bucKQatk81f2Eph+bTUwHb2tx\nm88DzGyfP5dAr6XRCf+VSWiaFrdyIQoCmjzxgYFRGCxRqlwL68//+E8Pp+ztUus5GkSzxSCDatps\nAoVSJv+FI1Ec/WgQB08N6B1EvQ7cfO0CrGhrBKBvm+z/oB+/P3YJ4ch0YGDkTgRCCiJRFV6XflIj\nqlq/R4i9hopTF0bNnIJ1K+bj/bPDce3inQ45aYXBupIw4Q/DJolxE3ejx4EJfxiiKMQ9172fXGp+\njzFhJ66CZAs2cvn9GQFTIq9Lr/hpHasxtkTZtm54tJNoZhhkUE2bTaBQ7IlF0zQEw1H4gxGc7h7D\nK4d6zT8buRrCK4d6oWkapkJRvHqox0zSBPS8i0BYMQtkadADkQlfCC2NTkz4Y0W7YtRYJVANoplT\nAAD3bOpI20IdSF5J8AUigAazjTpi/5VlCUvmuzKuVMxk+ymX31+qEubG9siEP4zJqTD8gQjcThvW\nrZiPviF/0vNl27qp5hovROXEIINqWmKgEAwpGJnQjzk+vftkxk/SxZpYVFU/ajkVUqCqGs72jeOF\ntz/GVOwIqatORp1dRigSxXNvnotrWOaqk3HDNfPw/kdD0FJ0T5UkEQ0ePTnRerLCaGKW+CneaKGe\nTuJKgiyJUBQ1aYXgmiUN+OI9qzL+3PtO9Otl0QPxwUCmVaVcA73EEuaAvroTjkTR0uiE12XXf94h\nPzasaskYWBkSc0FyfRwRTWOQQTXNGigEQ0qsMqTeMTTbJ+lC1wxQVQ2+YASBkGLmU5ztG8crh3ox\nFVL01uxRFVd9IfjESFw9DEkUcNv1C/GpdUvw23fO671LEp7fyIkIR1T8z8+sxPNvnkX/SEA/9RGr\n1OkLRDDuC5nbBtlWdBJXEjxOG8YnQ0nJk5/e2JH15+8emMSYJfBRFNX8faSTKdCzBgF2WUQwpMQF\nPr5AJGWhr2yBFZB61WVgLFA1xeOyKfepKZo7GGRQTbMGCqcujEKWRTR67LBZOnxm+iRdiJoBUVWF\nP6ggEFSSAoMjHw4CACRRhKJEoWp63xBYciquX96M7Rs70Fyvf3ofmwzp34+o+XzGNC1LovkpX5Ik\ntC3wAACujPj1UtuSEFd1s8ljzzj2xJUEo/S3ElUhCoIZeK1ftQBDQ5MZJ69IiiJiABBW0reWX7ts\nHi5emcTv378EXyACh01Cg9uGn7/2ESanImYeSTCi90Cps0sIR1S0NOq9WOrsyf/E5bJVlq3iZzVP\n0HO1ZDqVB4MMqjmpJrov71prnhCwyWLchFesEwJRVYU/oFfSTHfIc2wyBE3TtzIS52CbLGLbLW3Y\ncv3iuOtNXoee6KlEEWuyCkBPAvU6bdhyw6IUk6T+XaqqQZQsKwdZWgSkWklwOuSUn+izTV42ObkU\nuappuOqPpN26OnlhBEfPDMHrssMmiRibDGEwHDUTXo0tIaP3SYPbbq5SPL375IxzatLlgnQP+DBQ\n5RM0O61SKWXsXUJUbYyJbmAsEFc06eSFkZJ1gY2qKib8YQyPB/Uy12m+zyh/PTQewFRQifszp0PC\nn2xbkRRgAMDmNa1wO22Y3+CEwybpjcEEYPF8N/7kMyuTqmwCgAYNkhFcCHpxrqZYbYlMnUbz6Tdj\nnbwCIQVD4wH0j/jxk5c+xMkLI+hs9ZrdVlVNDzBEUYDdJsb9ntI9p1E8TNX0rrKRWGlyaydYa8A4\nmz4c6d4rkTSrLtXU02Sulkyn8uBKBtWUTJ/SjE/lU0EF476QmXy4YVVLQV47qqrwBfQ+IJnKU53t\nG8fe45fRO+hDKOE4qsdpg8dpwz2bOszjq9Y/9zptuHXNInhdduw70Q/XeBB2mwhoGsKKav78idsc\nsiRC0VTYHZI5gQZDCq5Ohc3vS/epPNctI2PyMqpjGnyBCH7z9nlsWNWCgbEAnEZRLCW59Xvip2nr\nhKhEVaiaNn1qRptudR8IKXA6ZNhlAU/vPjnrZM10uSCJqzHT46yeCZrHcamUGGRQTcn0Kc3Y33/1\nUG9cPYejZ4awdKF3xkvFSlSFPxBBMBzNGFwAwPFzw/iv/Rf1RE8Lr0sPLuY31MXVxzA4bBLqY8W2\ngPi6E6m2KIwJ3WAkbFon9MlAJGXNiHyWzY2tqTFfGBP+MGRJ1I+5WhjFr/oGfbj/juXYd6If/WZT\nM2DMF4IcS9JMnKytE6IsiQgq+n2L9UMz/994zWAICMYCt1TJmicvjMQFIemCjnRJv/tO9Oc0QVdy\nYiWP41IpMcigmpLtU1rfoA8L57mSkhBnsh8dUVT4g5Gk0t6phJUo9p3ox5tH++IqR+rBgx0Lm514\n+O6VSY8TBcDrspsJlwZjEjt1YRQaYNaFMFgn9KHxIJYu9KLthkVxn+pnkxhpjMGYrGyyaOZMqJqm\n90KJMQIbI9Bbu2weHvtxl176HHq2iKpqGIuVB7eyTohepw2BWHAmCQIgTh/NFQA0eRwIpqiUavxu\n80l4zBQkZJugKz2xkp1WqZQYZNSISv7kVConL4xgwhdG/4g/roIlMD0JDI0HIOVYVjoda9OybFRN\nw/Gzw3j1cC8m/NO5A7IkoM4h66c8fEH4psI42zcet4LhdMjwOm0QxfjkTOskFomqgKYnkFoLZFkn\n9HRmkxgJJG9NGZ1ZxyZDST1DAJhbGd0DkxiK5cwA+oKEGtUgCBr8CasgiROix6nXvtCAuN9xa5Mz\na65BrgmPuQQJmSboakisZKdVKhUGGTWg0j85lYL1HjR5HJiM1YNo8thx7yen+5S0NDoxaskXMOQy\nsWbrK5LoQv9V7DnQHdeITIoVxBJFwDc1PaFqgFnxc3VHE+rddtgtLdqNnzFx9cIojgUgrkBWLj9P\nPsvmiUFs2wIPTl0YRSS27WQcC65zyGgWBDjs+tiNBNBwJApJFNHoCWMyEIGWal9JAwbHAzh5YSRt\nTkjie9065mxbGbkmPGYLErJN0EysJJrGIKMGVMMnp2Kz3oM6h2xOtg0eR1IL79/tv5j0+Ez70eFI\nFL5AfHGsTEYmgni5qwenLk7305AlAbddvwhtLW681NWD8cmQ2VRMFIH6On28x84OY8v1i5IKVKVb\nvXDVyWaQYS2Qlcv+euKncrssABCS+ookTuwXr0zi2NlhfYyaXlRrZCKEBo++rdPR6sGWGxbhxXcv\n4tJQEJpmlDWPYmQiCBVpConFVj+y1S2xjjlxJSFT0JRrwmP3wGRciXJjtSQxSEgVePUN+jA4Fki5\nhcXESpqLGGTUAH5yyv0erF02Dw0NLry49+Os+9GhSBT+HIOLs33j6Dp1BT2DPvgD8adLbrhmHrZv\n7ECT14GzfeMQgKRP8oIgQJYEjPvCKStgWoMo6+qF0ebcF4hAANDa5DQn1VwTHLPlKxivbZQEDxp5\nEZIY13nVF4iYDdbWLpuHF9+9qOdmCPp2iKYBSsolDH0lRwRyqkKauLJhNFxLPE1inLoxgqa2BZ6U\nQUZiPsXkVGQ6cIsVLQOApQu9cd9nvV/dscCr0euAO5Zkm7iFxcRKmosYZNQAHknL7x6sX7UA7c2p\n6yAA+QUXAHCmZwy/3XsBk1PhuOChpVGvKdHROj05HflwEA67DIddQdSy8jAVUuC2tFlPZA2ijJMi\ngL56YRSiMk5RzGT7LNNq2NB4wCzJDkwHSEpURYPbjrCiIqpqEIC4kxzWRmSWwyApvwaAere+EpLr\n+zbVCsvJC6PwumxodDswNhkyc3KMkybZjrTuO9EPr9MWV/4c0AMoa5CQeL+MGh6+QMQ8IuwLROAL\nRNC50Dsnc6SIAAYZNYFH0gpzD0JhfVskEs0tuNA0Dae7x/D8W+fi2q9LooB6tx2tTXVxAQYAc/Jy\n1cmYjCWCCoJgbnWkG681iDImTl8ggmhUxeRUGDZZjCt5DSCpGdmLB7pz7nYaCCnwBSLoH/HD47TB\nH5g+cisIsdLnGnDVH0adQ8a8+jq0tbjTPr8oCnFdYSVJQFTVVzdEQf/zBo8j4z1IlFj8ywi8Jqci\ncasRzoRTN5n6lgyNB8wEVuu9q3fZ09bvAKa3qoz/GoGfKAhZ+6QQ1TIGGTWAR9Jmdw/yDS4A4PKw\nHy8e6MaF/qvmNWsxLUEQ4lqzG5q8DoxOhuCOJW36YhOZx2nL2HwrMYgyJk4B08vxxopFMKyYORsG\nRVFxof9qUlKlwRrEWCdsWRYhSyLCShSSKJjbH7CcDNFzMoLYvKY17jnbWjzm/REFAZAAJapBEAC7\nTTKPtk7OcKvHOtFP+MJQonr/EiWqQoyN1djCmX5M5q0Y4z5Y83oQG1u6+wVMb2HJCSeX5tJqIlEq\nDDJqBI+k5X8PgmElNslnK6E17ao/jFcP9+qt1i3XXXUyvC47JMtx06aEmg8C9GDhxQPdEATB/LQL\nIG0vkEytxid84ZR1ISKKmrJ2R6akSmsQYy2mZSQv2mVRv08iIECAKEz/9EbTub5BX9xz3vvJTvz8\n1Y/MFQG7LMHjFOGwSXETeN0Mt3qMid5o6W690aqqjzWxW2y2ST/XFbHE7zO2WBKLm82l1USiVBhk\n0JwzFYxgeCKQV3ARjkSx90Q/3jl+Oa6Q16r2Rly3tAldpweTHnPztQvM/3fYJHhdNrQ2u+B0yFlX\nXHJpNf74Tw+nHKtdlpKqbgKZkyqtK0H9I37IcnyNi0aPA2O+EBbNc6N/xA9oejDV5HWgziHDJosp\nk2z/5DMrk35W43VS/fz5nJQyJnpfIGI2TANg1hVRVS3pGHC2ST/XFbHE7+tc6MVtCcXO5tpqIlEq\nDDJoTtA0DcFwLKETQs4BhqppeP+jIbx2uBdXLXUtFja7sGPzdH+RRq8DRz4cxNhkCDZJPwr62uFe\nHD0zhNtvXIT1K6cDjlxWXHKZbNMlu3a0etDgtqF3yJ90DDPTJ3ljXKmKdNU5ZCzzOtDgtmN4PPcj\nmul+1lxzQ6avjUAabQAAIABJREFUJwdHxnP8aPcpwBJkGFVARVFEe4sbYUXLa9LPdUWMq4dE2THI\nqBGs+Jn6HqxZ2oxAKAp/MIKomvvKBQB8fHkCLx3oxuWRKfOax2nDtpvbsGHVgrhKnCvaGrGirRFn\n+8ZjRbU0iAIw7gvhv97tht0m5fX7yGWyzba0P9NE2HTPe++tnSm3NAB9dUgSBDz+08Ozev/le1Jq\n7bJ5aGtx40L/JFTonV01DYhGNdTZRYQVdc7+fSCqBAwyagArfibfgyujU/jVWx9j4pYQrlnSmOGR\nyYbHA3ipqwenu8fMa7IkYMsNi3HHjYvNapapHPlwUC+wJQlx/TvyLYyWarINhBQoUTVuIrf2J0l3\nJDPf5ftsWwapinhFFNXMD8n3/WcNDu2yiGBIiVshAbIFR/p9FkUBIgSoqoaoqkGFfgpmLv59IKoU\nDDJqACt+Tt8DzfgkG1u1OHR6MOcgYyqo4M33+nDw1ABUS8GLmz4xH5/Z2I5GjyPDo/WpbsIfhiQJ\nSQW1jBWIXFecElcTjBMfTV5H3MR5/x3L0x6RnM1yfrbHWv/86d0nEdUwo6ZzicFhMKKfEKmzSwhH\n1JyCo7ASRZPXYSaYatCPyGoJhb/m0t8HokrBIKMGsOInMDg2BVVF0pZIYlGlVJSoiq4/DODN9/oQ\nCE2fUuhs9WLnrZ1oX+DJ+hw2SUSDx46Fza60y/35rDgZX794oBt9gz4Ew9Gk45FAZUycs2k6lypA\ndjpkNLjtOdeXsB47BRBLTEXS/ZpLfx+IKkXyvwxUdYwKg8nXa/+MvqZpmApGUO92pMy5SDxGmvjY\nP1wcxfd/dQIvHug2A4wmrwMP370CX/rcdVkDDEEA6l02zGuogyyJaZf1jQZeqaS7DgDBcBTzG53m\nJ/OxyZBZ1huojIlzNu+/7oFJDI0H0D/iNyuLAvn9XIn33AguvAnHSefC3weiSsOVjBowFyt+apqm\nV6UMKlBVDRtWtZhdTK2sx0itLg358OLBblzsnzSv1dkl3Ll+CW5dszDlqkEiuyyi3m2P+95M+Qy/\nfSf5dwSkn1DT9SvJt9tqrmaaPDyTpnPG601ORRCORKGqmp7XEVJQ77ZjZXvueTSJ97y9xY1xXzhj\nXgcTpYlKg0FGDZhLFT8TgwuDcZTUOEba5HXg5msXmNcNE74QfvfuRRw8ecW8JgrAxuta8ekNbXDX\nxX/6TUUUAK/LHldJ0ipdPkO+Jycy9SsxFCqQnE3ycD5N56z2neiHXRYRCE6vzGjQC5615bBFlTgG\n6+tNBxHJ42GiNFHpMMioEdV2Zj/fT5JqLLjwJwQXVsYx0lRCkSj2Hr+Mvcf748qHX9vRiHs2d2JB\nmiX/RE6HDK/TFnd8NdefLd8Vp3T9SqwluGf7OzfGeurCaMraF7nmfGRrOpfK0HgAYUWFJArm0VMh\n1scksXpovjL9fai0ROlU75c7W7zZH0hUBRhkUMnl80lSVTX4gxEEQgrSlbk42zeedgVDVTW8f3YI\nrx7uxaSlmNaieS7s2NyJTyxpyGnMsiSg3mVPqiA5k58t1xWnVP1KrN1WZ8s61lBsyyIQUmCXJTR6\n7KhzyEXN+WhpdOLSsF8P2DT9d6VBL6rVMzC7ICOTSkqUTvd+aWhw5R20EVWisgQZx48fx3e+8x08\n++yz6O7uxqOPPgpBELBixQp8/etfhygyH7WW5fJJMqqq8AcVBIJKUktwq+niV7qRqyHza1EQsOdg\nN/otxbS8Lhv++6c+gZWL6zOuRhgEAG6nDe46OelY6kx+tnxWnIq9DWbt1qrGOqICQESJ6gEbgM6F\nxftEveWGRTh5YRThSDSuQ6sgAFenwmmbuc1WvttWxZTu/fLGoR588Z5VJR4NUeGVPMj4z//8T/zu\nd7+D06lH6d/85jfx13/919i0aRMee+wxvPHGG9i2bVuph0UllOmTZFRV4Q8oCIQyBxeGIx8m9wxR\nFBW//v3HcSsXNknE1hsXYeuNi7GotR6jo/6sz230G8klCXT6Zyjsp+RiboMZY50MRCAKAqKxKMO4\n75OBSFGTh9cum4d7NnVg994LAGJbJYIAURTgcdqKtn1RSYnS6d4vV3J4fxJVg5IvGXR0dOAHP/iB\n+fWpU6ewceNGAMDtt9+Od999t9RDohJLdeRR0zQ0euwYHg9iKscAA4ivg6GqGiZ8IQyOB+ICjHUr\n5uP//NGNuPvmdjhi2x1n+8bxi9c/wr/99gP84vWPcLZv3Px+URTQ6LGjyevIK8BI97Pp1yvv+KQx\nVqM1uiQKMDq5y7IIr8te9ByF/3brUsxvrIOzToYsi7DbJTR6HXAWcatm7bJ5uP+O5WhtckIUBLQ2\nOQu2BZWvdO+Xhc3uEo+EqDhKvpKxfft29PX1mV9rmmYuQ7vdbkxOTqZ7qKmpyQVZzrw3XmtaaigR\n7N6t1+DZPX8AoP/+o7Gl+i3r2tCU5z+urfPcGBz1Y3Iqggl/GNYijyvaG/HAXSvQuag+7jGnzo/g\njaP6e1AUBUz4w3jjaB88njpsWrMQXpc9p62UbD9b4vVK+x0aY7XLEiKKCkkSIAGY1+CAq86GxfM9\neY15pj/fyo5m9A8n52Dk8vrvnRnE64d6cGXEj4Xz3Lh7YwfWr1qQ9rrhzhYv7ty4dEbjLaR075dP\nb+youPdLteP9LLxc7mnZEz+t+Rd+vx/19fUZvls3NjaV9XtqSUuLF0ND2YOvatHe7MTOzR1459hl\nDE8EzWTNRY11OW1jGDRNQ71TxrHhqbhCXJIo4I6bFuPTG9ogCELSc7574nJSF1ZBAA4cv4R1y5sx\nEgjP6mf73G1Lk/Io2pudFfc7NMb64oFuXOi/anZrtcWCjptXzc95zLN5j96yaj5+c+Vq0vVsr5+Y\nNNlz5Sqe+d1JHF/VgqNnhpKuT5RptSKTdO+X9asWVNz7pZrV2r+hlSDxnqYLOMoeZFx33XXo6urC\npk2b8M4772Dz5s3lHhIVUTgShT+oYGGzG//jrhUzfp6+Qb2YVveV6Te5IOgt2Lfd0o5rO5rSPnY4\nYR9cFAWIgp40WgjVdJzYGGumuhKlGAOQf4JruqTJ379/CV6XPeX3V+LvpZreL0T5KnuQ8dWvfhX/\n8A//gO9+97tYvnw5tm/fXu4hURGEwnq79XBCE618jftCePVQL46dGzaviYKAzWtacdf6Nrjqsr+l\n5zc60T/shyAgloegb41UYt5EqZR7opvJ66dLmvQFIimDjEoowU4015QlyGhra8Pzzz8PAFi2bBl+\n9rOflWMYlEGhyi4Hwwp8gUjS9kS+QuEo3j5+GfsStjpWdzZhx6YOzM+xmBYAbLlpCV5482xS3kUt\nl2EvlNm+LwpZzjvdUVSPM3XV1rkcRBKVS9lXMqjyFKLscqGCC1XVcPTMIF470gdfIL6Y1s5bO3HN\n4tyKaRmcdgl3bmiHpKlVUYa9UJNyIZ4n0/silwqVhS7nne4o6qfWLYnLybB+PxGVFoMMSjKbssuF\nCi4A/ZjpSwd7cGV0OtG33mXDtlvasW5FS14nQCRRr9jpsEuQRKGk2wMzneALNSnP9Hms47bLIi4P\nTyGkRM0EUaPU+b4T/Tmd1Ch0Oe9MuRxLF3rLFkSy+RrRNAYZlGQmBaUKGVwMjgXw0sFunOmdrl1h\nk0XcfuNibL1hUdbS3lYCAFedDI/TlrViZzEmh9kECoWalGfyPNZxB0IKLk2GEInqfUYUTTWbteVT\nz6IY5bzTBYvlyjFh8zWieAwyKEk+ZZf1pmWFCS58gQjePNqHQ6cHzD4lAoB1K+dj2y0daHAnJ/Nl\nYpP0Vuw2OXtBrWJNDrMJFAo1Kc/keazjNrapBOjbV6IkmNedDjnnXIdKKuddLJXWfI2o3NgkhJKk\n27u2Xg+EFAxPBDDhD886wFCiKvYev4zvPncMB/8wHWAsW1SP//++6/HApz6RV4AhCPq2yryGupwC\nDCDz5DAbswkUClU9dCbPYx230VpeFIW4SqzG9VxzHXJ5X1W7Smq+RlQJuJJBSdLtda9Z2oypYAT+\noBJX/GqmNE3DyQujeLmrJ648+LyGOuzc1IFrO5tyakpm5bBJqHfbIOXZZK9Yk8NsPr0XqsfGTJ7H\nOm5ZEqEoKkRBgGQT9S2TqAqP05ZXOe5iN3wrJ2OrbXAsAA2A12lDnWP6n9daWq0hygeDDErJuqet\nanoL8KGJINQCBBcA0Ds4iRcPdMe19HY6JHx6Qxs2rm7Nu2eINbEzHWMiGPOF0eSxx01wxVrKn02g\nUKhJeSbPYx23x2kzczAa3XZz8pxJv49y1+MoButWmzt2r4wutsa9qqXVGqJ8MMigtFRNw1RQwVQw\nggLFFhibDOGVQz048fGIeU0S9WJad67LrZiWlQDAGUvsFDOselgnApssJuVcFGLVIFPi6EwDhUJN\nyvk+T+K4mzx2QBAQjqhlXYHIlpxbjpMd1i0148SNLxCBLxBB50JvzazWEM0EgwxKMtPg4mzfOI58\nOKh/iov1I1nR1ghAP33y9rHL2P9Bf1wOx5qlzbhnUwfmNeS/YpBPYme2hLzZBgPZEkcTn6cajjlW\n2qpDtntcrpMdiVttTocMp0OGKAj48q61RXtdomrAIINMqqrBH4zordbzXLk42zeOVw71ml+PXA3h\nlUO9UFUN474wXj/aB7+lmNaS+W7svLUTyxZlb4iXSBD0PW9XXerKjqnkknMxm0k1n1MFPOY4M9nu\ncblOdsyFUzNEM8Ugg2YVXBiOfDiYdC0YVvDLN84hFIma1+rddmy/pR03rpifcXsjnZkmdhZ7Isgn\ncZTHHGcm2z0u18mOQiXoEtUiBhlzWCGCC4P1dEhEUXHVH44LLuyyiNtvWowtNyyCXc69mJZBFAU0\nZEnszKTYE0E+QQyPOc5MtntcrhWFWj41QzRbDDLmIFXV4AtGEAgqKFA+J5q8DgyOBzE5FcZUUIn7\nsw0rW7DtlnbU51lMy+DKIbEzG+tEMO4Po7WpsHkQ+QQxlbq8Xul5ItnucTlXFCotf4WoUjDImEOi\nqgp/UClocAHoKxd2m4TBsam4FRG7TcQ9mzqw+bqFM3refBI7c2FMBC0tXgwNTRbkOa3PDeT2abYS\nl9erIU8k2z3migJR5WGQMQdEVRX+gIJAqLDBhaZpOPHxCF451INxX9i8LksClsx34871S7CyvSnv\n551JYmclyPXTbCVOhtWSJ5LtHnNFgaiyMMioYUpUX7kIFji4AICeAb2YVu/gdDEtl0PWi2ldtyDv\nxEzDTBM7q02lTYb55okkbq3cu/UatDenLl9ORHMXg4waVMzgYmwyiJe7evHB+fhiWp9cuxCfWrfE\nLEaUr9kmdtLs5JMnkmpr5dk9f8DnbltaUYETEZUfg4waokRV+AIRBMPR7N+cp2BYwe/fv4x3T8YX\n01q7rBnbN3VgXv3MkxYLkdhJs5NPnki1bK0QUfkxyKgBEUWFP1ic4CKqajjy4SBeP9ILv+XUSFuL\nXkxr6cL8i2kZCp3YSTOXT54Ij+ASUa4YZFSxiBKFL6DE1aMoFE3T8FHvOF7q6sGgZRm9wW3H9o0d\nuOET82a88lCtiZ3FUuijozN9vlzzRCr1CC4RVR4GGVUoHInCF4ggrKhFef4ro1N46WA3zvZNmNfs\nNhF33LgEW25YNKuVh7mS2JmrQh8dLcVR1Eo8gktElYlBRhUJRaLwFzG4mJwK4/UjfThyZtCsdyEI\nwM2rFuDum9vgdc2smBYAiALgddlnnBhaqwqd31CKfIlUWys8XUJEqfBf/CoQDCkYmQgiEi1OcBFR\nVOz/oB+/P3YJ4cj0a3xiSQN2bO7AonnuWT0/Vy/SK3R+Q6nyJRK3VopR4IyIqh+DjAoWDCv6tgiE\nogQYqlFMq6sHE/7pYlotjXXYubkTK9sbIczixIcoCqh32VBn59ssnULnNzBfgogqCf/1r0CBkAJ/\nIAJFLXSVi2ndVybx4oGL6Bvym9dcdTLu3tCGW1bPvJiWwWmX4HXZIYo8lppJofMbmC9BRJWEQUaF\n0DQNwXC06MHF6NUgXj7Ug5PnR81rkijgtuv1YlqzXXWQRAH1LKqVs0KXGK/EkuVENHcxyCgzTdMQ\nCCnwBRWoRQwuAiEFv3//Et49eQVRy+tcv7wZ2zd2oHkWxbQMLKo1M4UuMV5pJcuJaO5ikFEmqqZh\nKqhgKhhBEWMLRFUVh04P4o0jfZgKxRfTuvfWpehc6J31a8iSgAa3HTaZqxdERDSNQUaJqaqGqVDx\ngwtN03CmdxwvHeyOO1nQ6NGLaV1/zcyLaRkEAfA4bXCzqBYREaXAIKNEVFWDLxjR260XMbgAgP4R\nP1462INzl6aLaTlsEu64aTFuu352xbSsz8djqURElAmDjCKLqir8AUUPLor8Wlenwnj9cC+Onhky\nX0sQgFuuXYBPb5hdMS0Dj6USEVGuOFMUSTHbrScKK1HsO9GPd45djqsGuqKtATs2d2Jhs6sgr+Ny\nyPC4mNhJRES5YZBRYMXsiJpI1TQcPzeMVw/1xhXTWtDkNItpFQITO4mIaCYYZBRIMTuipnKh/yr2\nHOzGJUsxLXedjLtvbsfN1y6AVIAiWEzsJCKi2WCQMUvFblqWaGQiiJe7enDq4nQxLVkScNv1i3DH\nTYsLlivhsEnwumyQJSZ2EhHRzDDImKFQOAp/sHTBRSCk4K33LuHAqfhiWjdcMw/bN3agyesoyOuI\nogCv08ZuqURENGucSfIUCCnwByNQosVO59RFVRVvHunFf+09j4ClmFZHqwc7N3eio3X2xbQMTocM\nLxM7iYioQBhk5KBUfUUSX/PD7jG81NWD4YnpYlpNXodeTGt586w6pFrJooB6tx12GxM7iYiocBhk\nZFCqviKJLg/7sedgN85fvmpec9gk3Ll+CW5ds7AgxbQAQADgdtrgrpMLFrAQEREZGGSkUKq+Iomu\n+sN47XAv3vtoupiWKABb1y3BbWsWwuMs3CkPuyyi3m1nYicRERUNgwyLUvUVSRSORLH3RD/eOX4Z\nEUsi6ar2RtyzuQOrr2nB6Kg/wzPkThQAr8vOxE4iIio6zjSIlf4OKiXpK2KlahqOnR3Gq4d6cHUq\nYl5vbXJi562dWNFWmGJaBqdDhtdpg1iAGhpERETZzOkgo5R9RRKdvzyBPQd7cHl4eoXC47Rh281t\n2LBqQUEDASZ2EhFROczJIEOJqvAH9NLfpQ4uhicCeLmrB3+4OGZekyUBW25YjDtuXAyHvXCBABM7\niYionCoiyFBVFd/4xjdw5swZ2O12PPHEE+js7Cz465Syr0iiqaCCt97rw4FTA1AtezI3fWI+PrOx\nHY2ewhTTMjCxk4iIyq0igozXX38d4XAYzz33HI4dO4Zvfetb+Pd///eCPX+p+4pYKVEVXX8YwJvv\n9SEQmn79zlYvdt7aifYFnoK+HhM7iYioUlTETHT06FFs3boVAHDTTTfh5MmTBXneUvcVsdI0Dadj\nxbRGEopp3bOpA2uXFa6YloGJnUREVEkqIsjw+XzweKY/0UuSBEVRIMszG14oHIUvEEEkWvrgAgAu\nDfux58BFXOifNK/V2aeLaRV6C4OJnUREVIkqIsjweDzw+6dPWaiqmjHAaGpyQZaTJ9SpYAS+qQgE\nuwBvgbqR5mNsMojdb59H18l+SzEtAVvXLcFntyyDx2Wf8XM3N7uTrgkAPC47vC4bEzvz1NJSuJ4v\npOM9LSzez8Li/Sy8XO5pRQQZ69evx1tvvYWdO3fi2LFjWLlyZcbvHxubMv+/HH1FEoUjUbxz/DL2\nHu+PWz25tqMR92zuxIJGJ8LBCEaDkQzPkl5zszupGJeR2BmaCiE0FZrV+OealhYvhoYms38j5Yz3\ntLB4PwuL97PwEu9puoCjIoKMbdu2Yf/+/XjooYegaRqefPLJrI/R+4ro7dajZQouVFXD+2eH8Nrh\n3rhiWgubXdh5ayc+saSh4K8pCIDXaYOrrnAlxomIiIqhIoIMURTxT//0Tzl//1RQgS8YKWnTskQf\nX5rAnoPd6B+ZXlXxOm3Ydks71q9sKUrypcMmod5tgyTyWCoREVW+iggy8jUVKl+AMTSuF9M63T1d\nTMsmidhy4yLcfuNiOIqQfCkKAhrcPJZKRETVhbNWjqaCEbzx3iV0JRTTWrdiPrbdUvhiWoY6u4QF\nzS6MjpTnpAwREdFMMcjIQomqOHhKL6ZlrRS6dJEXOzd3oq2lsMW0DKIooMFlh8MuQWLdCyIiqkIM\nMtLQNA2nLo7h5a5ujF6dPr3RXO/APZs6sWZpU9GOjbrqZHicNog8lkpERFWMQUYKfUM+7DnQjYtX\n4otp3bW+DZvXtBatH4gs6bkXthQ1QIiIiKoNgwyLcV8Irx7qxbFzw+Y1URCwaU0rPr1+SdGOjepF\ntWxwOdgtlYiIageDDOhlyN85fhl7T1yGEp1O6lzd2YR7NnWgpdFZtNd22CR4XTZ2SyUiopozp4MM\nVdVw9CO9mJYvMF1Ma9E8vZjWNYsLX0zLwG6pRERU6+bsDHeuTy+mdWXUUkzLZcNnbmnHuhXFKaZl\nYLdUIiKaC+ZckDE4FsBLXd040zNuXrNJIrbGimkVs5Mpu6USEdFcMmeCDF8ggjeO9uHw6QEYxUIF\nAOtWzse2WzrQ4J55h9RsBABupw3uOiZ2EhHR3FHzQYYSVfHuySt4671LCEWmi2ktW+TFzluXYsn8\n5BbqhWR0S2ViJxERzTU1G2RomoaTF0bxclcPxiani2nNa6jDjk0dWN1ZvGJagNEt1Q5XXc3eYiIi\nooxqcgbsHZzEiwe60TPgM685HXoxrU3XFa+YloHdUomIiGosyBj3hfDKoR4cPzdiXpNEAZuva8Wd\n69uKvqogigLqXTbU2WvqthIREc1ITcyGoXAUbx+7hH0f9McV07puqV5Ma35D8YppGZx2CV6XncdS\niYiIYqo6yIiqGo6eGcTrR/riimktme/Gzls7sWxRfdHHIMWOpTp4LJWIiChO1QYZZ/vGsedANwbG\nAua1ercd229px40r5pekgym7pRIREaVXlUHGj188HV9MSxZxx02LseWGRbCXoIMpu6USERFlV5VB\nhhFgCADWr2rBtpvbUV/EYloGFtUiIiLKXVUGGQCwfHE9dm7uxOIiF9MysKgWERFRfqoyyPi/D9+E\nRo+jJKsJelEtG1x1tqK/FhERUS2pyiCjpdEZd1S1WFhUi4iIaOaqMsgoNhbVIiIimj3OoglcDhke\nF4+lEhERzRaDjBgeSyUiIiqsOR9k8FgqERFRcczpIIPHUomIiIpnTgYZogB4XXY4HXPyxyciIiqJ\nOTfLslsqERFRacyZIIPdUomIiEqr5oMMAdPdUpnYSUREVDo1HWTYJD2x0yYzsZOIiKjUajLIYL8R\nIiKi8qu5IIP9RoiIiCpDzQQZ7DdCRERUWWpiRma/ESIiospT1UGGHDuWauexVCIioopTlUGGKAjw\nOGX2GyEiIqpgVRlkNHocrNhJRERU4aryCAYDDCIiospXlUEGERERVT4GGURERFQUDDKIiIioKMoS\nZLz22mv427/9W/PrY8eO4cEHH8RDDz2EH/7wh+UYEhERERVYyYOMJ554Ak899RRUVTWvff3rX8dT\nTz2FX/ziFzh+/DhOnTpV6mERERFRgZU8yFi/fj2+8Y1vmF/7fD6Ew2F0dHRAEARs2bIFBw4cKPWw\niIiIqMCKVifjV7/6FX7605/GXXvyySexc+dOdHV1mdd8Ph88Ho/5tdvtRm9vb7GGRURERCVStCDj\nwQcfxIMPPpj1+zweD/x+v/m13+9HfX19xsc0Nbkgy3OrlHhLi7fcQ6gpvJ+Fx3taWLyfhcX7WXi5\n3NOyV/z0eDyw2Wzo6elBe3s79u3bh7/6q7/K+JixsakSja4ytLR4MTQ0We5h1Azez8LjPS0s3s/C\n4v0svMR7mi7gKHuQAQD/+I//iL/7u79DNBrFli1bcOONN5Z7SERERDRLZQkyNm3ahE2bNplf33TT\nTXj++efLMRQiIiIqEhbjIiIioqJgkEFERERFwSCDiIiIikLQNE0r9yCIiIio9nAlg4iIiIqCQQYR\nEREVBYMMIiIiKgoGGURERFQUDDKIiIioKBhkEBERUVFURO8SSm9kZAT33XcfnnnmGVxzzTXlHk7V\n+/znPw+vV2/k09bWhm9+85tlHlF1+9GPfoQ333wTkUgEDz/8cE6dlym9F154Ab/97W8BAKFQCKdP\nn8b+/fuzdqam1CKRCB599FFcunQJoiji8ccf57+jsxAOh/G1r30Nvb298Hg8eOyxx7B06dKMj2GQ\nUcEikQgee+wx1NXVlXsoNSEUCgEAnn322TKPpDZ0dXXh/fffxy9+8QsEAgE888wz5R5S1bvvvvtw\n3333AdAbR95///0MMGbh7bffhqIo+OUvf4n9+/fje9/7Hn7wgx+Ue1hV6/nnn4fL5cLzzz+P8+fP\n4/HHH8ePf/zjjI/hdkkF+/a3v42HHnoICxYsKPdQasKHH36IQCCAP/uzP8MXvvAFHDt2rNxDqmr7\n9u3DypUr8cgjj+DLX/4yPvWpT5V7SDXjgw8+wLlz5/BHf/RH5R5KVVu2bBmi0ShUVYXP54Ms83P1\nbJw7dw633347AGD58uX4+OOPsz6Gd7xCvfDCC2hubsbWrVvxH//xH+UeTk2oq6vDn//5n+PBBx/E\nxYsX8Rd/8Rd4+eWX+Q/PDI2NjeHy5ct4+umn0dfXh7/8y7/Eyy+/DEEQyj20qvejH/0IjzzySLmH\nUfVcLhcuXbqEHTt2YGxsDE8//XS5h1TVVq9ejbfeegt33303jh8/joGBAUSjUUiSlPYxXMmoUL/5\nzW/w7rvv4k//9E9x+vRpfPWrX8XQ0FC5h1XVli1bhs997nMQBAHLli1DY2Mj7+ksNDY2YsuWLbDb\n7Vi+fDkcDgdGR0fLPayqd/XqVZw/fx6bN28u91Cq3k9+8hNs2bIFr7zyCnbv3o1HH33U3Dal/N1/\n//3weDz+3nVtAAAC5ElEQVT4whe+gLfeegtr1qzJGGAADDIq1s9//nP87Gc/w7PPPovVq1fj29/+\nNlpaWso9rKr261//Gt/61rcAAAMDA/D5fLyns7Bhwwbs3bsXmqZhYGAAgUAAjY2N5R5W1Tt8+DA+\n+clPlnsYNaG+vt5M9G5oaICiKIhGo2UeVfX64IMPsGHDBjz77LO4++670d7envUxXCemOeOBBx7A\n1772NTz88MMQBAFPPvkkt0pm4c4778Thw4fxwAMPQNM0PPbYY1k/1VB2Fy5cQFtbW7mHURO++MUv\n4u///u/xx3/8x4hEIvibv/kbuFyucg+ranV2duL73/8+nnnmGXi9XvzzP/9z1sewCysREREVBbdL\niIiIqCgYZBAREVFRMMggIiKiomCQQUREREXBIIOIiIiKgkEGERVNX18f1q5di127dmHXrl347Gc/\ni7vuugv/+q//ir6+PqxatQqPPfZY3GNOnz6NVatW4YUXXijTqImoUFgkgIiKasGCBdi9e7f59cDA\nALZv3457770XjY2N2Lt3b1xp4j179qC5ublcwyWiAuJKBhGV1NDQEDRNw9jYGNxuN1avXo3Dhw+b\nf75//35WvCSqEVzJIKKiGhwcxK5duxAKhTA2Nobrr78eP/zhD7Fw4UIAwI4dO/DKK69g8+bNOHHi\nBFatWgXWCCSqDVzJIKKiMrZL9uzZg127dkHTNNx2223mn99111145513oKoqXnrpJezYsaOMoyWi\nQmKQQUQlIYoivvKVr2BgYAA//vGPzetutxvXXnstjh49ioMHD3KrhKiGMMggopKRZRlf+cpX8G//\n9m8YHh42r+/YsQNPPfUU1q5dy6Z1RDWEQQYRldTtt9+OdevW4fvf/7557c4778Tp06exc+fOMo6M\niAqNXViJiIioKLiSQUREREXBIIOIiIiKgkEGERERFQWDDCIiIioKBhlERERUFAwyiIiIqCgYZBAR\nEVFRMMggIiKiovh/XelM6pONWxMAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1d8a1533358>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.set(rc={'figure.figsize':(8.7,6.27)})\n",
    "ax = sns.regplot(X.iloc[:,5],Y)\n",
    "ax.set(xlabel='RM', ylabel='SalePrice')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Казалось бы, какие тут могут возникнуть проблемы? Основным недостатком такого подхода является возможное наличие дополнительных зависимостей, которых такой график исключить не может, а также отсутствие возможности определить величину изменения целевой переменной при увеличении/уменьшении признака.  \n",
    "\n",
    "С другой стороны у нас есть важность признаков, отражающая влияние каждого на целевую переменную, и которую мы теперь умеем выводить аж 2мя способами! Но и тут мы упираемся в невозможность интерпретации абсолютного значения коэффициентов. И тут на первое место выходит другой подход - Partial Dependence Plot (PDP), идея которого заключается в изолировании влияния конкретной переменной на объясняемый показатель и попытка приблизить нас к ответу на вопрос \"А что будет, если мы увеличим признак на 1?\"."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Алгоритм построения PDP:\n",
    "1. Обучим \"лесную\" модель на наших исходных признаках $X$\n",
    "2. Выберем признак $X_i$, значения которого нам бы хотелось интерпертировать (чтобы избежать случаный флуктуаций, рекомендуется опираться на важность признаков и выбирать более-менее \"сильные\" признаки)\n",
    "3. Выведем все уникальные отсортированные по возрастанию значения $\\{X_i\\}$, которые может принимать данный признак $X_i$\n",
    "4. Подставляем вместо исходных значений признака первое уникальное значение $X_{ij}$\n",
    "5. Используя нашу модель, делаем предсказание на новом наборе данных и берем среднее от полученных значений. Назовем рассчитанное среднее - базовым значением. Его мы будем использовать далее для подсчета относительного изменения.  \n",
    "4. Для каждого следующего уникального значения $X_{ij}, где j\\neq0$ из выбранной колонки:\n",
    "    *  Заменяем всю колонку на выбранное значение.\n",
    "    *  Снова делаем предсказание на изменненном наборе и, взяв среднее, считаем разницу от вычисленного ранее базового значения.\n",
    "5. Результатом должен стать график, у которого на оси X отложены уникальные значения признака, а по оси Y изменения относительно базогового значения, которое на графике обозначено 0."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Не будем терять ни минуты и, используя описанный выше алгоритм, построим график для признака \"Среднее количество комнат на один жилой дом\"(RM), в важности которого мы почти не сомневаемся."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 362,
   "metadata": {
    "collapsed": true,
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "def feat_pdp(m, x, y, feature_name): \n",
    "    unique_values = sorted(x[feature_name].unique())\n",
    "    new_x=x.copy()\n",
    "    new_x[feature_name]=unique_values[0]\n",
    "    base_value=np.mean(m.predict(new_x.values))\n",
    "    score=[]\n",
    "    score.append(0)\n",
    "    for i in range(len(unique_values)-1):             \n",
    "        new_x[feature_name]=unique_values[i+1]\n",
    "        score.append(np.mean(m.predict(new_x.values)-base_value))\n",
    "    return score,unique_values\n",
    "\n",
    "def pdp_boston():\n",
    "    boston = load_boston()\n",
    "    X = boston[\"data\"]\n",
    "    Y = boston[\"target\"]\n",
    "    names = boston[\"feature_names\"]\n",
    "    X=pd.DataFrame(X,columns=names)\n",
    "    rf = RandomForestRegressor(random_state=256)\n",
    "    rf.fit(X, Y)\n",
    "    return feat_pdp(rf,X,Y,'RM')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true,
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "scores,unique_values=pdp_boston()\n",
    "df_pdp=pd.DataFrame({\n",
    "    'RM': unique_values,\n",
    "    'SalePrice': scores\n",
    "})\n",
    "#последовательно отрисовать 2 графика\n",
    "ggplot(pd.concat([X,pd.DataFrame(Y,columns=['SalePrice'])],axis=1), aes('RM', 'SalePrice'))+stat_smooth(se=True, method='loess',span=0.2)+ylab(element_text(size=20, text='SalePrice')) +\\\n",
    "xlab(element_text(size=25, text='Line Plot'))\n",
    "\n",
    "ggplot(df_pdp, aes('RM', 'SalePrice'))+stat_smooth(se=True, method='loess',span=0.2)+ylab(element_text(size=20, text='SalePrice')) +\\\n",
    "xlab(element_text(size=20, text='RM'))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<img src=\"img/pdp_plot.Jpg\">"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Чтобы убедиться в том, что PDP действительно не обманывает нас, ниже приведена таблица, в которой несколько раз меняется значение RM и делается предсказание при неизменных остальных признаках. Результат говорит нам о том, что LinePlot действительно не изолирует влияние других переменных, поскольку, ориентируясь на него, мы бы прогнозировали значительно меньший результат при изменении значения RM с 3.863 до 4.8. Во втором случае значение количества квартир подросло до 7 и это дало нам прирост в $\\approx10$ ед в SalePrice, что прекрасно отражено на графике частичной зависимости. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<img src=\"img/res_pdp.Jpg\">"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Как вы можете видеть, PDP, в отличие от обычного линейного графика, устраняет влияние сторонних факторов, что хорошо видно при небольшом количестве квартир. Более интуитивной визуализация получается, если использовать при построении категориальные признаки. Больше крутых примеров в [репозитории курса fast.ai](https://github.com/fastai/fastai/tree/7016feaf39583977ff9f70972e5a3232c8bd4447/courses/ml1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Пути принятия решений"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Часто случаются ситуации, когда не столько интересует важность признаков в целом, сколько их вклад в формирование предсказания для конкретных наблюдений. Прежде чем лезть в наш дремучий лес,снова сделаем небольшой шаг назад и рассмотрим на примере одного дерева, как формируется конкретное предсказание.  \n",
    "Для этих целей нам понадобится удобная библиотека [treeinterpreter](https://pypi.org/project/treeinterpreter/), которая легким движением <s>топора</s> разделяет деревья на пеньки и позволяет заглянуть внутрь."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<img src=\"img/treeinterp.png\"  width=\"70%\" height=\"70%\">"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Для начала взглянем на построенное для этой задачи решающее дерево. Сразу сделаем маленькое уточнение, что для удобства в данном случае мы намеренно ограничили максимальную глубину дерева до 3. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 367,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DecisionTreeRegressor(criterion='mse', max_depth=3, max_features=None,\n",
       "           max_leaf_nodes=None, min_impurity_decrease=0.0,\n",
       "           min_impurity_split=None, min_samples_leaf=1,\n",
       "           min_samples_split=2, min_weight_fraction_leaf=0.0,\n",
       "           presort=False, random_state=256, splitter='best')"
      ]
     },
     "execution_count": 367,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dt_clf=DecisionTreeRegressor(random_state=256,max_depth=3)\n",
    "dt_clf.fit(X,Y)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<img src=\"img/small_tree_path.png\">"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Также, пользуясь классическим определением прогнозной функции, данным Jerome Friedman в книге The Elements of Statistical Learning, $f(x) = \\sum_{m=1}^{M} c_m I(x\\in R_m)$, где $c_m$ - это константое значение предсказание в листе, $I(x\\in R_m)$ - индикаторная функция, показывающая принадлежность объекта к одному подмножеств $R_m$, образованных разбиением в листе, M - количество листьев в дереве, введем несколько дополнительных понятий:\n",
    "* Путь(Path)  - набор листьев, в который попадает наше наблюдение \n",
    "* Вклад(Contribution) - вклад признака, рассчитываемый, как разница между константным значением $c_m$ в текущем и образованном листах\n",
    "\n",
    "Перепишем прогнозное функцию на $f_{path}(x) = bias+\\sum_{k=1}^{K} contrib_k$, где K -признаки, участвующие в Path, $contrib_k$ - вклад $k$-ого признака в предсказание, bias - среднее значение целевой переменной на всем наборе данных (в корневом листе), вклад в который и вносят наши признаки "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Рассмотрим это на примере.  \n",
    "Пусть имеем наблюдение со следующим признаковым описанием:"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<img src=\"img/test_treeint.JPG\">"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Воспользуемся новой терминологией, тогда:"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<img src=\"img/bias_contr.JpG\">"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Как мы видим, предсказание действительно складывается из смещения и суммарного вклада каждого признака в изменение целевой переменной. Вооружившись полученным знанием, воспользуемся упомянутой библиотекой treeinterpreter и посмотрим на нее в действии. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 229,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Bias: 22.532806324110698\n",
      "Contributions:\n",
      "('CRIM', 0.0)\n",
      "('ZN', 0.0)\n",
      "('INDUS', 0.0)\n",
      "('CHAS', 0.0)\n",
      "('NOX', 0.0)\n",
      "('RM', -2.599085393878145)\n",
      "('AGE', 0.0)\n",
      "('DIS', -0.4446039215686248)\n",
      "('RAD', 0.0)\n",
      "('TAX', 0.0)\n",
      "('PTRATIO', 0.0)\n",
      "('B', 0.0)\n",
      "('LSTAT', 3.4160829913360757)\n",
      "Prediction:22.905200000000004\n"
     ]
    }
   ],
   "source": [
    "prediction, bias, contributions = ti.predict(dt_clf, X.iloc[367].values.reshape(1,-1))\n",
    "print(\"Bias: {0}\\nContributions:\\n{1}\\nPrediction:{2}\".format(bias[0], '\\n'.join(map(str,list(zip(names,contributions[0])))),prediction[0]))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Вопросов к тому, что делает библиотека после этого блока кода, уже возникать не должно, но на всякий случай еще раз уточним, что метод predict в данном случае возвращает 3 компоненты:\n",
    "* Prediction - предсказанный моделью результат \n",
    "* Bias - смещение, среднее значение target'a на всем наборе данных\n",
    "* Contribution - вклад каждого признака в построение предсказания  \n",
    "\n",
    "Убедимся на всякий случай, что тут нет никакого обмана, и проверим выполнения равенства $prediction = bias+\\sum_{k=1}^{K}$:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 236,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[22.9052] [22.9052]\n"
     ]
    }
   ],
   "source": [
    "print(np.sum(contributions)+bias,prediction)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Отобразим вклады признаков, отсортировав их модули по убыванию: "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 198,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12]),\n",
       " <a list of 13 Text xticklabel objects>)"
      ]
     },
     "execution_count": 198,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAh4AAAGaCAYAAABACkoZAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzs3XlYFWX/P/D3YVMBF5BFcUlFPSDi\nBqKCIovhkqKo30hSs9z3Mkvr0cc193CrTHLXcENFDU3TlFxwC9xxKxU3EBBlle18fn/44zySZhSH\nOUjv13V1JTNzznyYM2fmPfd9z6ASEQERERGRAgz0XQARERH9ezB4EBERkWIYPIiIiEgxDB5ERESk\nGAYPIiIiUoyRvgvQlcTENH2XQERERP+ftXXFl05niwcREREphsGDiIiIFMPgQURERIph8CAiIiLF\nMHgQERGRYhg8iIiISDEMHkRERKQYBg8iIiJSDIMHERERKYbBg4iIiBTD4EFERESKYfAgIiIixTB4\nEBERkWIYPIiIiEgxDB5ERESkGCN9F1BS3NyS9bLeU6eq6mW9RERErwO2eBAREZFiGDyIiIhIMQwe\nREREpBgGDyIiIlIMgwcREREphsGDiIiIFMPgQURERIph8CAiIiLFMHgQERGRYhg8iIiISDEMHkRE\nRKQYBg8iIiJSDIMHERERKYbBg4iIiBTD4EFERESKYfAgIiIixZTK4BEfH48xY8bAzc0Nrq6u+Oij\nj5CQkKDvsoiIiKiYSl3wEBEMGTIEqampWLduHTZs2IDExEQMHz5c36URERFRMZW64JGUlAR7e3vM\nnDkTDg4OcHBwwIABA3Dp0iU8efJE3+URERFRMRjpu4A/sra2xsKFC7U/x8fHY/PmzXB2dkblypX1\nWBkREREVV6kLHs8bMWIEDh48iMqVK2PdunWvXNbCwhRGRobPTUku2eL+hLV1Rb2sl4iI6HWgEhHR\ndxF/5sqVK8jJycE333yDc+fOITw8HLa2ti9dNjExrdDPbm76CR6nTlXVy3qJiIhKkz+7EC91Yzye\n5+DggCZNmmDhwoXQaDTYsWOHvksiIiKiYih1wSMpKQkRERGFplWoUAG1atXiLbVERESvuVIXPO7f\nv49x48bhwoUL2mlpaWm4efMm6tevr8fKiIiIqLhKXfBo3LgxXF1dMWnSJJw/fx6XL1/Ghx9+CEtL\nS/To0UPf5REREVExlLrgYWBggKVLl8LR0RFDhw5F3759YWZmhg0bNsDMzEzf5REREVExlOq7Wv4O\n3tVCRERUeryWd7UQERFR2cLgQURERIph8CAiIiLFMHgQERGRYhg8iIiISDEMHkRERKQYBg8iIiJS\nDIMHERERKYbBg4iIiBTD4EFERESKYfAgIiIixTB4EBERkWIYPIiIiEgxDB5ERESkGAYPIiIiUgyD\nBxERESmGwYOIiIgUw+BBREREimHwICIiIsUweBAREZFiGDyIiIhIMQweREREpBgGDyIiIlIMgwcR\nEREphsGDiIiIFMPgQURERIph8CAiIiLFMHgQERGRYhg8iIiISDEMHkRERKQYBg8iIiJSDIMHERER\nKYbBg4iIiBTD4EFERESKYfAgIiIixTB4EBERkWIYPIiIiEgxDB5ERESkGAYPIiIiUkypCx5JSUmY\nMGEC2rZtC1dXVwwcOBDXrl3Td1lERESkA6UqeGg0GowaNQq3bt3CN998g02bNsHc3BwDBgxASkqK\nvssjIiKiYipVwePKlSuIiYnBrFmz0KRJE9SvXx/z589HZmYmIiMj9V0eERERFVOpCh7Vq1fH8uXL\nUbduXe00lUoFEcGTJ0/0WBkRERHpgpG+C3iehYUFvLy8Ck1bv349srOz0bZtW/0URURERDpTqoLH\nHx08eBDBwcF4//33YW9v/8plLSxMYWRk+NyU5JIt7k9YW1fUy3qJiIheB6U2eGzfvh2TJ09Gly5d\n8Mknn/zl8ikpmQpU9dcSE9P0XQIREZHe/dmFeKka41Fg2bJl+Oyzz/DOO+9g3rx5MDAolWUSERHR\n31TqWjy+++47LFq0CGPGjMHIkSP1XQ4RERHpUKkKHleuXMHChQvRq1cvvP3220hMTNTOMzMzg6mp\nqR6rIyIiouIqVcFjz549yM/Px7Zt27Bt27ZC88aOHYsRI0boqTIiIiLSBZWIiL6L0IU/Dup0c9PP\nXS2nTlXVy3qJiIhKk9dqcCkRERGVTQweREREpBgGDyIiIlIMgwcREREphsGDiIiIFMPgQURERIph\n8CAiIiLFMHgQERGRYhg8iIiISDEMHkRERKQYBg8iIiJSDIMHERERKYbBg4iIiBTD4EFERESKYfAg\nIiIixTB4EBERkWIYPIiIiEgxDB5ERESkGAYPIiIiUgyDBxERESmGwYOIiIgUw+BBREREimHwICIi\n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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1d89fc66a58>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.set(rc={'figure.figsize':(8.7,6.27)},font_scale=1.5)\n",
    "ax =sns.barplot(x=names,y=contributions[0],order=[x[0] for x in sorted(list(zip(names,contributions[0])),reverse=True,key=lambda x: np.abs(x[1]))],color='blue',orient='v')\n",
    "ax.set(ylabel='Contribution')\n",
    "plt.xticks(fontsize=15,rotation=35, ha='right')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Для нашего наблюдения наибольший вклад был получен благодаря LSTAT (процент населения, отнесенного к низшему классу), что с одной стороны говорит нам о важности признака для используемого набора параметров и с другой - немного настораживает, поскольку в предыдущих пунктах мы наблюдали явное доминирование признака RM над остальными. Стоит также взглянуть на то, как в целом влияет данный признак на целевую переменную."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 228,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5,0,'LSTAT')"
      ]
     },
     "execution_count": 228,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\nEeroV62iOTudTis1NdXaunWrxzqfP38+1NGvmsvlsvr372+NGjXK2r17t7V7925r2LBh1r333mtZ\nlhWW61zRnMNxnf1R7YtHQUGB1b59e2vVqlXubT/88IOVmppq/f3vfw9hsuCaO3euNWzYsFDHCJqD\nBw9aw4cPt7p06WL16NHD4y8cVpDpAAALHElEQVThqVOnWsOHD/d4/PDhw60pU6aYjhlQ5c35+++/\nt1JTU62DBw+GMGFg7dq1y0pNTbWysrLc2woKCqyf/exnVmZmpvXwww9bzz77rHtfSUmJ1atXL2vh\nwoWhiBsQFc35b3/7m9W6dWuroKAghCkD6/jx49avfvUr64cffnBvW79+vZWammqdPn06LNe5ojmH\n4zr7o9q/1bJnzx6dP39enTt3dm9r3LixGjVqFJZvO5Tav3+/mjdvHuoYQbN9+3Y1adJEa9euVePG\njT32bdu2zWO9JalLly7Vfr3Lm/O+fftUq1YtNWrUKETpAq9BgwZatGiRmjVr5t5ms9lkWZbOnDmj\nr7/+2mOd7Xa7br755mq9zhXNed++fWrSpImioqJCmDKwkpKSNHfuXPd/08eOHdPKlSt10003KT4+\nPizXubw5X3vttWG5zv6ICHWAyjp27JgkKTk52WN7vXr13PvC0f79+1VQUKAhQ4bo8OHDatmypZ56\n6im1bds21NECYsCAARowYIDXfceOHQvL9S5vzvv371d8fLz+7d/+TV999ZUSEhJ03333adSoUbLb\nq+e/HxISEtSjRw+Pbe+8844KCgrUpk0b5eXleV3nb775xmDKwCpvzhkZGXr77bcVERGhxx57TDt3\n7lRycrJGjhypgQMHhiZwgD3xxBPasGGDrr32Wq1YsUJnz54Ny3W+1OVzli7+fg7nda5I9fwT6xL5\n+fmy2+2KjIz02B4VFaWCgoIQpQquCxcu6IcfftC5c+f0zDPPaOHChapXr56GDx+ub7/9NtTxgu7C\nhQtX/EshnNdbkrKyspSXl6eMjAwtW7ZMQ4cO1fz58/Xb3/421NECZsOGDZozZ45Gjx7tPrMTHR3t\n8ZjIyMiwWudL59yiRQtlZWXp9OnTGjx4sJYtW6a7775bL7zwglatWhXqqAExYcIEffjhh+rQoYNG\njx6t8+fPSwrvdb58ztnZ2WG/zhWp9mc8atWqJZfLpeLiYkVE/DSdwsJC1a5dO4TJgqdWrVraunWr\n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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1d8a163c6a0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "prediction, bias, contributions = ti.predict(dt_clf, X)\n",
    "plt.plot(X.iloc[:,-1].values,contributions[:,-1],'o')\n",
    "plt.ylabel('Contribution')\n",
    "plt.xlabel('LSTAT')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Из-за того, что пока мы работаем только с одним деревом, общий паттерн на данном графике разглядеть довольно непросто. Акцент можно сделать лишь на отрицательном тренде при увеличении показателя, что вполне логично, поскольку районы с большим кол-вом бедного населения явно не уличивают стоимость жилья. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Дальше - больше! Мощь библиотеки раскрывается при использовании ее в комбинации со случайным лесом, реализованном именно в пакете sklearn, поскольку его API позволяет получить ссылку на пути решения для отдельных деревьев в лесе. Воспользуемся моделью, которую мы уже обучили ранее, и посмотрим на вклад признаков в предсказание. С точки зрения формулы разложения предсказания процесс совсем не усложнился. Интуитивно понятно, что вместо одного дерева мы имеем теперь композицию, а значит расширение для случайного леса будет выглядеть как среднее от суммы вкладов признаков в каждом дереве.\n",
    "$$f_{path}(x) = \\frac{1}{t}\\sum_{t}bias+\\sum_{k=1}^{K}(\\frac{1}{t}\\sum_{t}contrib_k)$$\n",
    "где t-кол-во деревьев в лесе."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 369,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12]),\n",
       " <a list of 13 Text xticklabel objects>)"
      ]
     },
     "execution_count": 369,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAicAAAGaCAYAAADU7OPrAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzs3XdYFNf+BvB3qQpY6IpdVFBAERAF\nsSCKJTbUGyMxlsReE0s0XhNLjF1suTEqdoOKqKhRgx0bigSMDUWjiKjAUlSaC8ue3x/+2CtXg9zL\nwo7h/TxPnsic2Z3v7s7uvnPOmVmZEEKAiIiISCJ0tF0AERER0ZsYToiIiEhSGE6IiIhIUhhOiIiI\nSFIYToiIiEhS9LRdQHmSyzO1XQIREREBsLSs8pdt7DkhIiIiSWE4ISIiIklhOCEiIiJJYTghIiIi\nSWE4ISIiIklhOCEiIiJJYTghIiIiSWE4ISIiIklhOCEiIiJJYTghIiIiSWE4ISIiIklhOCEiIiJJ\nYTghIiIiSWE4ISIiIklhOCEiIiJJ0dN2ASR97u5pWtluZKS5VrZLRETaxZ4TIiIikhTJhZPU1FTM\nmDEDXl5ecHNzwxdffIG4uDh1+6FDh9C1a1c0b94cH3/8Ma5fv67FaomIiEjTJBVOVCoVJkyYgPj4\nePz000/YvXs3TExMMGzYMGRkZODSpUuYNWsWPv/8cxw4cABNmjTBF198gfT0dG2XTkRERBoiqXBy\n584dxMTEYOHChWjevDkaNWqEZcuWIScnB+Hh4di0aRN69uyJgQMHwtbWFvPnz0e1atUQHBys7dKJ\niIhIQyQVTmrWrIn169ejQYMG6mUymQxCCLx48QLR0dFwd3dXt+no6KBVq1aIiorSRrlERERUBiR1\nto6pqSk6duxYZNmOHTugUCjg6OiInJwcWFtbF2m3srLCjRs3Snj/RtDT09VUuRWIds7WsbSsopXt\nEhGRdkkqnPynU6dOISAgAMOHD0etWrUAAIaGhkXW0dfXh0KhKNH9ZWTkaLxGKjtyeaa2SyAiojJS\n3AGopIZ13rR//35MmjQJ3bt3x/Tp09WhJC8vr8h6+fn5qFy5sjZKJCIiojIgyXCybt06fPPNN/jk\nk0+wdOlS6OjooHr16jAyMkJKSkqRdVNSUt4a6iEiIqIPl+TCycaNG7Fq1SpMmjQJ3377LWQyGYDX\nE2NbtmyJq1evqtdVqVS4evUqWrVqpa1yiYiISMMkNefkzp07WLlyJfr374+PP/4Ycrlc3WZsbIxh\nw4Zh7NixaNasGdq0aYMtW7YgMzMTAwYM0GLVREREpEmSCidHjx5FQUEB9u3bh3379hVpmzx5MsaN\nG4f58+fjp59+wpIlS9CsWTNs3rwZZmZmWqqYiIiINE0mhBDaLqK88OyP/w1/+I+IiDTtgzxbh4iI\niComhhMiIiKSFIYTIiIikhSGEyIiIpIUhhMiIiKSFIYTIiIikhSGEyIiIpIUhhMiIiKSFIYTIiIi\nkhRJXb6e6EPHq+kSEZUee06IiIhIUhhOiIiISFIYToiIiEhSGE6IiIhIUhhOiIiISFIYToiIiEhS\nGE6IiIhIUhhOiIiISFIYToiIiEhSGE6IiIhIUhhOiIiISFIYToiIiEhSGE6IiIhIUhhOiIiISFIY\nToiIiEhS9LRdABGRVLi7p2llu5GR5lrZLpFUseeEiIiIJIXhhIiIiCSF4YSIiIgkheGEiIiIJIXh\nhIiIiCSF4YSIiIgkheGEiIiIJIXhhIiIiCSF4YSIiIgkheGEiIiIJIXhhIiIiCSF4YSIiIgkheGE\niIiIJIXhhIiIiCSF4YSIiIgkRU/bBRAR0V9zd0/TynYjI821sl0igD0nREREJDEMJ0RERCQpHNYh\nIqL/mjaGmzjUVHGw54SIiIgk5YMMJwUFBVixYgW8vLzQsmVLTJo0Campqdoui4iIiDTggwwna9eu\nxYEDB7BkyRLs3LkTSUlJmDhxorbLIiIiIg344MJJXl4etm/fjilTpqBt27ZwcHBAQEAAoqOjER0d\nre3yiIiIqJQ+uAmxd+7cQXZ2Ntzd3dXLateujVq1aiEqKgouLi5arI6IiLRFiteEkWJNH4IPruck\nKSkJAGBtbV1kuZWVlbqNiIiIPlwfXM9Jbm4udHR0oK+vX2S5gYEBFApFsbc1NTWCnp4uAKBBg/iy\nKrFYDx/WL7ZdinU9fFil/AopISk+T6/b+VwVKu65kmJNr9ul9/pJsSZAmnWxpr+PDy6cVKpUCSqV\nCkqlEnp6/y4/Ly8PlStXLva2GRk5ZV3ee8nlmdou4Z2kWpfU8HkqOSk+V1KsiaiisrT86+D2wQ3r\n1KxZEwAgl8uLLE9JSXlrqIeIiIg+PB9cOLG3t4exsTEiIyPVyxITE/HkyRO0atVKi5URERGRJnxw\nwzoGBgbw9/fH0qVLYWpqCnNzc8ybNw/u7u5wdnbWdnlERERUSh9cOAGAL7/8EkqlEtOnT4dSqUS7\ndu3w3XffabssIiIi0oAPMpzo6elh5syZmDlzprZLISIiIg374OacEBER0d8bwwkRERFJCsMJERER\nSQrDCREREUkKwwkRERFJCsMJERERSQrDCREREUkKwwkRERFJCsMJERERSQrDCREREUkKwwkRERFJ\nCsMJERERSQrDCREREUkKwwkRERFJCsMJERERSQrDCREREUkKwwkRERFJCsMJERERSQrDCREREUkK\nwwkRERFJCsMJERERSQrDCREREUkKwwkRERFJip62CyCiiicy0lzbJRCRhLHnhIiIiCSFPSdEf3Ps\npSCiDw17ToiIiEhSGE6IiIhIUhhOiIiISFIYToiIiEhSGE6IiIhIUhhOiIiISFIYToiIiEhSGE6I\niIhIUhhOiIiISFIYToiIiEhSePl6+iDxkuxERH9f7DkhIiIiSWE4ISIiIklhOCEiIiJJYTghIiIi\nSfmvJ8TevXsXubm5UKlUb7W5uLhopCgiIiKquEocTm7evInJkyfj6dOnb7UJISCTyRAbG6vR4oiI\niKjiKXE4+eGHH6Cjo4NFixahRo0a0NHhiBARERFpXonDya1btxAQEIDOnTuXZT1ERERUwZW4+8PM\nzAy6urplWQsRERFRycOJv78/NmzYgNzc3LKsB7du3cKwYcPg5uYGLy8v/POf/8Tz58/V7QUFBVix\nYgW8vLzQsmVLTJo0CampqWVaExEREZWfEg/rJCYm4v79+/Dy8kKTJk1QuXLlIu0ymQybNm0qVTHJ\nyckYPnw4fH198e233+L58+eYO3cuvvzyS2zduhUAsHbtWhw4cABLlixB9erVMW/ePEycOBG7du0q\n1baJiIhIGkocTh4+fAh7e3v13/n5+Rov5tixYzAwMMC8efPUQ0hz5szBp59+iqdPn8LCwgLbt2/H\n7Nmz0bZtWwBAQEAAfHx8EB0dzVOZiYiI/gZKHE527NhRlnUAADp16gRHR8cic1tkMhkA4OXLl0hN\nTUV2djbc3d3V7bVr10atWrUQFRXFcEJERPQ38F9fhO3+/fuIjIxEVlYWTE1N4erqioYNG2qkmLp1\n66Ju3bpFlm3cuBHW1tZo3LgxTp06BQCwtrYuso6VlRWSkpI0UgMRERFpV4nDiUqlwnfffYd9+/ZB\n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\nMDCQF2AjIiL6m5CJN0+9KUZBQQFmzZqFgwcPFjkrRwiB3r17Y/HixZL/peI3z5Rxd9fOqcSRkeZa\n2S4REZGUFHe2TonDiUqlgo6ODu7fv4+rV6/ixYsXMDExQZs2bdCoUSONFVuWGE6IiIikoVSnEick\nJGDu3Llo06YNRo0ahUaNGqFRo0bIyspC69at4ezsjGXLlsHGxkajRRMREVHFVOw4THJyMj799FPE\nxsa+86JoY8eOxcOHDzFw4ECkpqaWWZFERERUcRQbTjZs2AADAwOEhoaiT58+RdpMTEwwYcIEhISE\nQAihkVOJiYiIiIoNJ+fPn8fIkSPf2WtSyMbGBl988QXOnTun8eKIiIio4nnvsE5JrrzatGnTEv3w\nHhEREdH7FBtOTE1NIZfL33snz58/R9WqVTVWFBEREVVcxYYTV1dXhIaGvvdOQkNDYWdnp7GiiIiI\nqOIqNpwMGTIEFy9exNKlS9/6JWDg9a8BL1++HOHh4fj000/LrEgiIiKqOIq9zkmLFi3w9ddfY8mS\nJTh48CDatGmDWrVqoaCgAE+fPsWVK1eQkZGB8ePHo2PHjuVUMhEREf2dvfcibEOHDoWjoyM2bdqE\nkydPQqFQAACMjY3h5eWF4cOHw9nZucwLJSIiooqhRD/85+rqCldXVwBAeno69PT0OAGWiIiIykSJ\nf5W4kJmZWVnUQURERATgPRNiiYiIiMobwwkRERFJCsMJERERSQrDCREREUkKwwkRERFJCsMJERER\nSQrDCREREUkKwwkRERFJCsMJERERSQrDCREREUkKwwkRERFJCsMJERERSQrDCREREUkKwwkRERFJ\nCsMJERERSQrDCREREUkKwwkRERFJCsMJERERSQrDCREREUkKwwkRERFJCsMJERERSQrDCREREUkK\nwwkRERFJCsMJERERSQrDCREREUkKwwkRERFJCsMJERERSQrDCREREUkKwwkRERFJCsMJERERSQrD\nCREREUkKwwkRERFJCsMJERERSYrkwkleXh4WL16Mtm3bwsXFBaNGjcLjx4+LrLN161Z4e3ujRYsW\nGD58OOLj47VTLBEREWmc5MLJnDlzcOzYMSxfvhy7d+/Gq1evMG7cOAghAAB79+7FmjVrMGPGDAQH\nB8PQ0BAjRoxAXl6elisnIiIiTZBUOHn8+DH279+PxYsXw8PDA02aNMHcuXORlZWFhIQEAEBgYCCG\nDx+Obt26wc7ODitWrEBaWhrCwsK0XD0RERFpgqTCyYULF2BmZgYPDw/1soYNG+LMmTOoV68e0tLS\nEB8fD3d3d3W7sbExHB0dERUVpY2SiYiISMMkFU7i4+NRp04dHD58GL1794aXlxcmTZqEpKQkAFD/\n39rausjtrKys1G1ERET0YdMrz40lJibCx8fnnW0GBgbo3bs3Hjx4gC1btuCbb76BgYEBAgICMHTo\nUBw6dAi5ubkAAENDw7duq1Ao3rt9U1Mj6Onp/v9faaV6LP8rS8sqWtkuERHRh6Jcw4m1tTWOHj36\nzjYdHR1s3boVmZmZWL16NerUqQMAWLNmDby8vBAeHg4bGxsAeGvya15eHipXrvze7Wdk5JTyEZSe\nXJ6p7RKIiIi0rriD9XINJ/r6+rC1tf3LdmtraxgZGamDCQCYm5ujevXqSExMhKurKwBALpejXr16\n6nVSUlKKvV8iIiL6cEhqzombmxtycnLw559/qpfJ5XJkZGSgbt26MDc3R/369REZGaluz87Oxs2b\nN9GqVSttlExEREQaJqlw0qpVK7i5uWHq1KmIiYnBnTt3MHXqVDRo0ADt27cHAAwbNgwbN27EkSNH\nEBcXh6lTp8LKygpdunTRcvVERESkCeU6rPM+MpkM69atw5IlSzB69Gjk5+fD09MTS5cuhYGBAQBg\n0KBByMzMxKJFi5CdnQ0XFxcEBgaq24mIiOjDJhOFl16tAN6cjOrurp2zdSIjzbWyXSIiIikpbkKs\npIZ1iIiIiBhOiIiISFIYToiIiEhSGE6IiIhIUhhOiIiISFIYToiIiEhSGE6IiIhIUhhOiIiISFIY\nToiIiEhSGE6IiIhIUhhOiIiISFIYToiIiEhSGE6IiIhIUhhOiIiISFIYToiIiEhSGE6IiIhIUhhO\niIiISFIYToiIiEhSGE6IiIhIUhhOiIiISFIYToiIiEhSGE6IiIhIUhhOiIiISFIYToiIiEhSGE6I\niIhIUhhOiIiISFIYToiIiEhSGE6IiIhIUhhOiIiISFIYToiIiEhSGE6IiIhIUhhOiIiISFIYToiI\niEhSGE6IiIhIUhhOiIiISFIYToiIiEhSGE6IiIhIUhhOiIiISFIYToiIiEhSGE6IiIhIUhhOiIiI\nSFIYToiIiEhSGE6IiIhIUhhOiIiISFIYToiIiEhSGE6IiIhIUiQXTh4/fowxY8bAzc0NXl5emD17\nNl6+fFlkna1bt8Lb2xstWrTA8OHDER8fr51iiYiISOMkFU6USiVGjRoFXV1d7NmzB2vWrMHvv/+O\n2bNnq9fZu3cv1qxZgxkzZiA4OBiGhoYYMWIE8vLytFg5ERERaYqkwsmDBw/w4MEDTJo0Cba2tnBx\nccHgwYNx4cIF9TqBgYEYPnw4unXrBjs7O6xYsQJpaWkICwvTYuVERESkKZIKJ9WqVYOOjg6Cg4Oh\nUCiQnp6O3377DY6OjgCAtLQ0xMfHw93dXX0bY2NjODo6IioqSltlExERkQZJKpxYW1tj9uzZ2L9/\nP5ydneHh4YG0tDSsWrUKAJCUlKRe701WVlbqNiIiIvqw6ZXnxhITE+Hj4/PONgMDA/zxxx94+PAh\nPDw8MGrUKGRlZWHJkiX48ssvsWXLFuTm5gIADA0N37qtQqF47/ZNTY2gp6f7/3+lleqx/K8sLato\nZbtEREQfinINJ9bW1jh69Og723R0dHDo0CEcPnwYZ86cgZGREQCgXr166Ny5M8LDw2FlZQUAb01+\nzcvLQ+XKld+7/YyMnFI+gtKTyzO1XQIREZHWFXewXq7hRF9fH7a2tn/Zvn37djRs2FAdTACgTp06\nMDU1RUJCAlq0aAEAkMvlqFevnnqdlJSUYu+XiIiIPhySmnNSo0YNxMfHF+kZSUlJwfPnz1GvXj2Y\nm5ujfv36iIyMVLdnZ2fj5s2baNWqlTZKJiIiIg2TVDjp27cvlEolpk+fjnv37uH69euYPHky7O3t\n0a5dOwDAsGHDsHHjRhw5cgRxcXGYOnUqrKys0KVLFy1XT0RERJpQrsM672NtbY1ffvkFS5cuxaef\nfgoDAwO0bdsWM2bMgJ7e61IHDRqEzMxMLFq0CNnZ2XBxcUFgYCAMDAy0XD0RERFpgkwIIbRdRHl5\nczKqu7t2ztaJjDTXynaJiIikpLgJsZIa1iEiIiJiOCEiIiJJYTghIiIiSWE4ISIiIklhOCEiIiJJ\nqbBn6xAREZH28GwdIiIi+mAwnBAREZGkMJwQERGRpDCcEBERkaQwnBAREZGkMJwQERGRpDCcEBER\nkaQwnBAREZGkMJwQERGRpDCcEBERkaQwnBAREZGkMJwQERGRpDCcEBERkaQwnBAREZGkyIQQQttF\nEBERERVizwkRERFJCsMJERERSQrDCREREUkKwwkRERFJCsMJERERSQrDCREREUkKwwkRERFJCsMJ\n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\nHy+EEOLVq1ciISFBbNu2TQQHB2usJyAiIkJs27ZNCPH6CMPLy0vs379fCFH0yKvwuUhISBBeXl7i\nxx9/VLeNGzdOjBgxQiP13L9/X3Tu3Fn06NGjyP76xx9/iKZNm4pTp06pl+3fv194eXmJLVu2qPf3\n77//XrRu3Vp91FRaKpVKrF+/XiQmJhZZnpOTI3x9fcXMmTNFZmbmW7crfL72798v7OzsxMWLF4UQ\nr19XTfn222+Fvb292LRpk5g5c6bo3LmzePTo0Vs1ZGRkiMWLFwtvb291HUqlUiQlJYmzZ8+KkydP\nitOnT2tkf1epVGLlypVi5syZYv369UV6Z8+cOSNcXFzUr01mZqb49ttvhZ2dnfj888/Fvn37hBBC\nJCcnq3t358yZU+qaSkKpVIq8vDzRu3fvItss/ByLi4sTfn5+YvTo0SI1NVUj24yOjhYdOnQQgwYN\nKtJTWfg6FPYOFrpy5YpwcHAQzs7OonXr1uLXX38VCoVCfPHFF2LMmDEaqUlTlEql6Nevn9i4caPG\n7nPixImiZ8+e4uTJk0WWb926Vbi7u4s//vhDCPG6l87T01O4ubkJOzs70bdvXxEVFVWkt0sq/lbh\nRAghnj9/Ltq2bSv+9a9/CYVCIZYuXSpatmwpunXrJrp06SLatm0revbsKQICAkR6erqQy+XCzs5O\nbNmyRRQUFGi0u+/NsFT4ZfKf3fqxsbGib9++YsaMGUIIIb766isxYMCAd4aH0jh69Khwc3MTfn5+\n4tWrV0KIf7/RC2sJDg4Wzs7O4tmzZ+L27dvC29tb9O3bV+zatUv4+fkJOzs70b9/f5GWlqaxuv74\n4w9x+fJlcfXq1SLLx40bJ3x9fcXjx4/febsTJ04IZ2dn9fBdWRg9erTo06ePOH/+vMjMzBSenp5i\n3bp17xxWKwyTb34YKhQK4efnp5EPoaCgIGFnZyfmzp1bZJtKpVKkpaUJd3d3ERoaWuQ2X3/9tejV\nq1eR0OLu7i4CAgI0sp/Pnz9f2NnZie7du4s9e/YUCf0bNmwQzZs3FxcvXlTvZ28+bxkZGWL06NFF\nuus15ejRo+Lzzz9Xv+dSU1OFt7e3mDJlSpEAVPgc3L59W4wePVr84x//KPIYNOnixYvC09NT9O7d\nWwwePFg4ODgIf39/9f5769Yt0aZNG/W+kpqaKnx9fUWnTp1E27ZtRdOmTcXixYtFUlKSiIqKUg/Z\n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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1d8a526c0f0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "prediction, bias, contributions = ti.predict(rf, X)\n",
    "sns.set(rc={'figure.figsize':(8.7,6.27)},font_scale=1.5)\n",
    "ax =sns.barplot(x=names,y=contributions.sum(axis=0),order=[x[0] for x in sorted(list(zip(names,contributions.sum(axis=0))),reverse=True,key=lambda x: np.abs(x[1]))],color='blue',orient='v')\n",
    "ax.set(ylabel='Contribution')\n",
    "plt.xticks(fontsize=15,rotation=35, ha='right')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "В отличие от нашего неглубокого дерева, в лесе все встало на свои места, и RM признак начал давать наибольший вклад в цену за Бостонское жилье, но все же не помешает взглянуть, как теперь распределен вклад признака LSTAT в зависимости от предсказанной цены."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 371,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5,0,'LSTAT')"
      ]
     },
     "execution_count": 371,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAisAAAGLCAYAAAAGWtJbAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzs3Xl4lNXZP/DvrNkmISsJSVgTkpAg\nSwIJVKpQFKxgXAqKsrgQCohLfa3252tF5dUKbrVu7GIRaxVUKtBWLVKpiIGEsCWQhT37JAESss32\n/P5IZ8hk5pnMhJlklu/nurwkzzzzzH0Imptz7nMfiSAIAoiIiIjclLSvAyAiIiKyhckKERERuTUm\nK0REROTWmKwQERGRW2OyQkRERG6NyQoRERG5NXlfB9CX1OomhIUF4uLFlr4OpVdxzN7P18YLcMy+\ngmP2XlFRwaKv+fzMilwu6+sQeh3H7P18bbwAx+wrOGbf5PPJChEREbk3JitERETk1pisEBERkVtj\nskJERERujckKERERuTUmK0REROTWmKwQERGRW2OyQkRERG6NyQoRERG5NSYrRERE5NZ8+mwgT5Nb\nVINd+8+isq4FsZGBmDFxCLJSo/s6LCIiIpdisuIhcotqsParQtPX5epm09dMWIiIyJv16TLQ8uXL\n8eyzz5pd++GHH3D77bdj1KhRuO222/D999/bfEZrayuee+45ZGVlYdy4cfj973+P5uZmV4bdJ3bt\nPyty/VyvxkFERNTb+iRZEQQBf/rTn/Dpp5+aXS8rK8PSpUtxyy234Msvv8TUqVOxbNkylJaWij5r\n+fLlyM/Px9q1a7FmzRocOHAAy5cvd/UQel1FnfUErKre+xIzIiKizno9Wblw4QIWLFiATz75BLGx\nsWavbd68GWPGjMHSpUuRkJCA3/zmNxg7diw2b95s9Vk1NTXYuXMnnn/+eYwZMwbjxo3DSy+9hF27\ndqGmpqY3htMrcotqIAjWXxsQEdS7wRAREfWyXk9WCgoKMHDgQOzYsQPx8fFmr+Xl5SEzM9PsWlZW\nFvLy8qw+Kz8/H1KpFOnp6aZr6enpkMlkyM/Pd37wfURsCQgAZkwc3GtxEBER9YVeL7DNzs5Gdna2\n1deqq6sRHW1eLNq/f39UV1dbvb+mpgbh4eFQKBSma3K5HOHh4aiqqnJe0H2ssq7F6nWJhMW1RETk\n/dxqN1BbWxuUSqXZNaVSifb2dqv3t7a2ws/Pz+K6rfd0FhYWCACIigruQbS9Z1BMMM5WNVpcHxwT\n0uPY3X3MruBrY/a18QIcs6/gmH2PWyUrfn5+0Gq1Ztc0Gg0CAgKs3u/v7w+NRmNxXaPRIDAwsNvP\nu3ixBVFRwVCrm3oWcC+ZPn6g2bblztd7ErsnjNnZfG3MvjZegGP2FRyz97KVkLlVsjJgwADU1taa\nXautrbVYGjKKiYlBQ0MD9Ho9ZDIZAECn06GhoQH9+/d3eby9xbjUs2v/OVTVN2NARBBmTBzMJSAi\nIvIJbpWsZGRk4ODBg2bXcnNzMW7cONH7dTodCgoKTPfk5+fDYDAgIyPD5fH2pqzUaCYnRETkk9zq\nbKB58+YhLy8Pb7/9Nk6dOoU//elPOHLkCO6//37TPQ0NDWhq6pgOi46Oxi9/+Us8++yzyM/PR15e\nHp577jncfvvtorMxRERE5FncamYlOTkZ7777Ll577TWsX78ew4YNw5o1a5CQkGC6Z9asWcjMzMTK\nlSsBAC+99BJeeukl/PrXv4ZcLsf06dPxv//7v301BKfhOUBEREQdJIIg1m7M+6nVTW5ZuNT1HCCj\nxdlpTklY3HHMruZrY/a18QIcs6/gmL2XrQJbt1oGog5iTeDWflWI5RtzkVvkPd15iYiIusNkxQ2J\nNYEDrp62zISFiIh8BZMVNxQb2X2PGJ62TEREvoLJihuaMXFIt/fwtGUiIvIVbrUbiDp0bgJXrr5i\n9R6etkxERL6CyYqbMjaBE9sZxNOWiYjIVzBZcXNstU9ERL6OyYoHYKt9IiLyZSywJSIiIrfGZIWI\niIjcGpMVIiIicmtMVoiIiMitscDWS/CUZiIi8lZMVrxA114sxvODADBhISIij8dlIC8gdkozzw8i\nIiJvwGTFC4id0szzg4iIyBswWfECYqc08/wgIiLyBkxWvIDYKc08P4iIiLwBC2y9AM8PIiIib8Zk\nxUvw/CAiIvJWXAYiIiIit8ZkhYiIiNwal4E8DDvVEhGRr2Gy4kHYqZaIiHwRkxUPYqtTbVZqNGdd\niIjIKzFZ8SC2OtVy1oWIiLwVC2w9iK1OtTwfiIiIvBWTFQ9iq1MtzwciIiJv5XbLQLm5uViwYIHV\n17KysrB582aL64899hi+/vprs2sTJ07Ehx9+6IoQ+4ytTrW79p9FudoyMZFKJMhZtYc1LERE5LHc\nLlkZO3YsfvjhB7Nr+/btwzPPPINFixZZfU9paSmefPJJ3HnnnaZrSqXSpXH2FbFOtTMmDjGrWTHS\n6g0AzGtYZt4Y7NogiYiInMjtkhWlUomoqCjT101NTXj99dexcOFC/PznP7e4X6PR4Pz58xg1apTZ\n+3yNMYHZuqcMDU3tovft2n8OM29M7K2wiIiIrpnb16y8//77UCqVWLZsmdXXT58+DZ1Oh4SEhF6O\nzP1kpUYj0N92/llZd6WXoiEiInIOt05W6uvrsWXLFixbtgwBAQFW7ykpKYFCocA777yDyZMnY/r0\n6fjjH/+I9nbx2QVvJlZoaySTuvW3nIiIyILbLQN19sknnyAiIgLZ2dmi95SVlQEAhg4dirlz56Kk\npAQrV65EdXU1Vq1a1Vuhuo1QldLmMpCxhoWIiMhTSARBEPo6CDHTpk3DzJkz8dhjj4neYzAY0NjY\niNDQUNO1v//973jiiSfw008/ISwsTPS9Op0ecrnMqTH3tQf/7xvUXWq1ec9T8zJww9j4XoqIiIjo\n2rjtzEppaSnOnTuHGTNm2LxPKpWaJSoAkJSUBACorq62maxcvNiCqKhgqNVN1x6wm6jvJlEBgNe2\n5KOxsc2ntjF72/e5O742XoBj9hUcs/eKihLfqeq2BQx5eXmIiorqtnD28ccftyi+PX78OJRKJQYN\nGuTKEN2SXCax6z52tiUiIk/htsnKiRMnTDMknWk0GqjVamg0GgDA9OnTsXv3bmzatAnnz5/HP//5\nT6xatQoPPfQQgoKCejvsPqcz2Leqx862RETkKdx2Gai2ttZieQcACgoKsGDBAmzevBlZWVm49dZb\nodFosHHjRvzxj39EREQEFixYgMWLF/dB1H0vLjLIaifbrgZE+F4iR0REnsmtC2xdTa1u8rq1wK6n\nL4tZnJ3GmhUv5mvjBThmX8Exey9bNStuO7NCPWPt/KDkQaEoPn/J9PW905MxIr5fH0dKRERkHyYr\nHiq3qAa79p9FZV2LxSGFYucHGflKlk5ERN6ByYoH6rrU0/mQQl9a2iEiIt/gtruBSNyu/WdFrnM7\nMhEReR8mKx5I7PwfbkcmIiJvxGTFA8VGBlq9zu3IRETkjZisONm6o3/GW4fWIK+6AFqDziWfMWPi\nEJHrg13yeURERH2JBbZOFqAIwJG6QpReOg1V6Vf4WWwmboz/GUL9HNsq3N1uH6CjRqWi7grkUil0\nBoOploVFtkRE5E2YrDjZ/BF3Y/rgKfihMhc/VeXhm3N7sPv8XoyLHoOpg25AnGpAt8+wZ7eP8d9r\nvyqEVm8Qvc/4PGPiE6pSQiqTov5yK+RSCXR6AWHBfgCAS1c0iI0MRPKgMBSfv2g1UXKErYSLiIjI\nXrIXXnjhhb4Ooq+0tGgQFOSHlhaNU58bpAjCiPAk3Bh/PcL9Q1HTokbxxTL8p+InnLl8DsEKFSID\nwiGRWD90cN1XhWhs0Vpcr2loxZT0OIfuMyY+jS1aCABaNXq0tHUsTxmPEWrV6NGq0UMA0NiixZmq\nRtP9jS1a5Ber8dW+M8gvrkWgvwLxUapufw+6fq7xOTHhgXa939lc8X12Z742XoBj9hUcs/cKCvIT\nfY0zKy6klCkwKW4CfhabicL6k9h9fi9ONJTgREMJBqpiMXPYdKRFpFgkLfbu9rHnPrFtzo4ShKsz\nN2UVlzH35o5DJsVmT2xtr+bsChEROYLJSi+QSqS4LjIV10Wm4lzjBfzr/PcoqD2G1Uc3YWjIIMwc\nNh3JYYmmpCU2MtDqYYRdd/vYc59YQnMtdueXY3d+OcKD/dDQ1G663nkZqqLO+jbqyrorTo+HiIi8\nG3cD9bLBIQOxcOQ8PJP5G4yOGokzjefxzuH1+FPBWpRdOgPA/t0+9twnts3ZGTonKp1t+aYYYsdj\nGoSO2RgiIiJ7sWalj9YCQ5TByIgejesiRuBS+2WcvFiKn6rycPbyeaQPHoKUAQNQ09CK5jYt4iJV\nuPem4RbLJ/FRKsSEB9q8L9Bfgfxida+OTasz2Hy9a+1Nb/CVNV8jXxsvwDH7Co7Ze7FmxY0NConH\nw6MfwunLZ7Hj9DcoaihGUUMxxkSNxGP3zUBkQITN94sdWti5lsTdVHApiIiIHMBkxU2oKwJQf2g0\nNO3hCBxShsPq4zhedwK/GHQDpg+eAn+5v93P6rr12d3IpVx9JCIi+zFZcQPmyUU4mo6Ohyy8GoFJ\np/HNuT34qSoP2Qm/RFZMOqSS7n/QO2sHkKvoDbaXiYiIiDrjX3HdgGVyIYG+YQD8T0/FjKE3o1XX\nhi0nPsNree/ibOP5bp/njks/ncVG9n6fFSIi8lxMVtyAWHJRXdeOW4fejOcnPIVx0WNwvqkcr+e9\nh0+Lt6NV1yr6PFfuAHIGnmFERESOYLLiBro7RbnkdDvO/JQAzYksSDUq7K34Ef/30+s4VHsUgpU9\nwmJbmt3Frv1nuX2ZiIjsxmTFDdjql2KsZylXN0PfFIYrRyZCWz4cTZoWbDy+BauPbkJ9a4PZ+7JS\no7E4Ow3xUSrIpBKEh4hvB+tKJrV+BIAzGZvHMWEhIiJ7sMDWDXQ+RbmqvhkDIoIwY+JgZKVGY/nG\nXPObBSl0lQmIEoYhZtRpFNafxP/lvoHshFswOf56UwFu1y3NH39bgt355RafHR7sh8vNGvQLUqKh\nqR16g0g3NxfYuqeMrfeJiKhbTFbchFi/FLF6ltoaKV4ak4ODNQX4vHQHPi/dgcO1xzF/xN2ICrTs\nzTL35iQkxvWzmhABwPKNuaIdaYGOGRdriczUjHgUn79kemZLm9bmczqz9z4iIvJtTFbcnK3zfyQS\nCTJj0jEiPAl/Lf4Sh9XH8IcDb2JM0M9RdjQUVXWtZocLGv+JigqGWt1k9jyxpEgmlWD901MAGBvN\nWU92jNy9xwsREXkeJitubsbEIVZ/+HfeUROsVCFn5Dzk1x7Bx0Vf4EDTd9BHhEO4PBLlasH0fltL\nLvYciig2+9NZ5yWtCvUV2FpUcqSWhoiIfBcLbN1c12LZ+CgVFmenWSQNEokE46LHIOjcVOgv9ocs\npAF+1+2DLOoCAAG79p+z+Tn2Hp5ob8wrFmYiLirI5n2zJyc6/GwiIvI9nFnxAPbMaBhV1xhgqB4L\nWUQVFIOLoBxaCH2/OlSdG9ntZwDWi3y76nzuUOdlpq5sNaebmhHv1OJae2MiIiLPw2TFyxiXc/T1\nsTA0hUEx7Chk4TVQhDSi5GIiksISRN9rKykyJgMVdc3o3NrFuA15654yzJ6SaPZ+saUlmVSCxLh+\nPR6jtdg6L5UZYwJsL30REZFn4DKQl+m8nCNoAqA5mQntheEQ5G14u2Ad/nbqH9AZ9A49s3OvFys9\n6AB07Ozp2jtFbGlJbxCc2mdF7Cyk7pa+iIjIM7hlslJaWork5GSLf/Ly8qzef+zYMcyZMwejR4/G\ntGnTsH379l6O2H0Ya1zCg43FqxKEXEnFLeH3IsI/DN+c24Pndr8GdUu93c905GDEzgmCMRaFzPof\nM2clE2LLTVX1lrM6RETkedxyGai0tBRhYWHYsWOH2fXQ0FCLexsaGpCTk4OZM2fi5Zdfxo8//ohn\nn30WkZGRmDRpUm+F7HY69zBpaGrHF/9sx4Mz78OZ0P3Irc7HyoN/wvwRszGm/3XdPsuRgxG7JghZ\nqdFYv6PIrnttsVWTYs9OJiIi8lxuObNSUlKCxMREREVFmf2jUCgs7t26dStUKhWeffZZJCQkYP78\n+cjOzsYHH3zQB5G7B7GZkG9zq7Eg9R48kvUADIIe649/hM9Ld0Bn0Nl8niMHI1pLELo7+6g7nZeh\nDIJg0a7fmTuZiIjI/bhlslJaWophw4bZdW9eXh7Gjx8PqfTqUDIzM3Ho0CEYDAZXhejWulsWuWFI\nFp4a9yhiAvvjuwv/wVuH1uJi2yXR5zlyMGLyIMvZL7H3W7vXmu5qUuzd3k1ERJ7JbZeB2tvbcffd\nd6OiogLDhw/H//zP/2DUqFEW91ZXVyM1NdXsWv/+/dHa2opLly4hPDy8t8J2G/Ysi8SqYvDUuEfx\n1+IvcLCmAK8cfAv3p85BWkSKxfusbWsWa6tffL4j6em6bJM2NByFZ8wPXNydX47EuH7dJhX21KQ4\nsr2biIg8i9slK21tbbhw4QLCw8Px9NNPQ6lUYsuWLZg3bx6+/PJLJCQkWNyvVCrNrhm/1mg0Nj8r\nLKxjeSIqKtiJI+h7Y5L7o1x9xsr1KJwov4wVf87D+ZomDIoOxqxf/BJjB47ApkOf4f0jH2BW2q2Y\nlTbDdCCi0cwbgzHzxqtN3LJ/+zern11V34wvfjiDnT9c/fxydbPV5AkAvj54wey51gyKCcbZqkaL\n6wOjgx363nnb97k7vjZegGP2FRyz73G7ZMXf3x8HDx6EUqk0JR0rV65EYWEh/vKXv+C5556zuL9r\nUmL8OiAgwOZnXbzYYvWcHE93uLjW6vUfj1SaJRFnqxrx+seHsDg7Df+T8TA2HNuCbYV/R3HNGdyf\nOgdHSxqtFrV+/G2J6BbmfkFKs8/ozoWapm5//6ePH2j1yIHp4wea3ttdUzhv/D7b4mvjBThmX8Ex\ney9bCZnbJSsAoFKpzL6WSqVITExEVVWVxb0xMTFQq9Vm12praxEYGIjgYN/MRMWWTcROOd61/xxW\npGbi6fGPYtPxv+BY3Qms2PcWagvSILR1fC+MRa1lFZexO7/cabHaU2TbXXfdj78tMYuJTeGIiLyL\n2xXYHj9+HOnp6SgsvPo3ab1ej5MnT2L48OEW92dkZCAvLw9Cp7/q5+bmIj093azo1pc4snsHuFr7\noVIE4eHRD2HqoBvQqL8Iv7T9kIaaz9LsPVwp+hypBLh0xfbSW1f27tgxnje0/ukpWLEw05SE5BbV\niCZPbApHROQd3O6neUpKCuLi4vDcc8/hyJEjKC0txTPPPIOLFy9iwYIF0Gg0UKvVpqWeWbNmoaGh\nAc8//zxOnTqFjz76CDt37kROTk4fj6TviO2+udoozlzn2Q2ZVIa7EmdCe2o0AAF+SYcgjy0D/nt+\nslYvvsMqNlJlM1FSBSgQ5H91Mk8sHkds3VMm+hqbwhEReQe3S1bkcjk2bNiAoUOHYsmSJZg9ezbq\n6uqwZcsWREREoKCgAJMmTUJBQQEAIDIyEhs2bEBRURHuuOMObNmyBatWrcLEiRP7eCR9p+tW3vBg\nP4QH++HiFevLQNZmN2KkiWg/MQGGdn8o4sugHF4ASHWi3WiNz7G1zflKqxbNbVd7ulhr0e+I3KIa\n0aUtgE3hiIi8hUQQxEolvZ9a3eT1hUtdD/kzkkiAuEiVzZOV135VCMg1UCYchqxfAwwtKoz3m4kf\n8i17skzNiMfcm5NM7921/xzK1VfsijE+SoUVCzMdGtOu/WdFdxgZde614u3f5658bbwAx+wrOGbv\n5XEFtt6gu90pvfW5LW3Wu9PGRdpOEMyKWkvHIzCpDO0hp1Ci3Im7bsnGgXyN1WJX43uzUqORs2oP\nDHbkwl2Xa2z93oklX11NzYhncS0RkZdgsuJEYn/jd8XuFGs/0AGY/SC3NfNgTz2HeaO1qfj3hX3Y\nVvoV/nXpM8yfeTcyom3Phog1p+tKbxDw0MrvoJBJkDQozKx5XNffO1s1KkbhwX6mWR4iIvJ8TFac\nxJ6/8Rt3p1zrjEvXzzL+QHekYLUn9RyTB16PqMAIfHD8Y3xQ+BfUtKjxyyE3QSKRWL1/xsQhds2C\nGGn1gkWXWyPj752tGhWj2VNsN5kjIiLP4nYFtp5K7Pyazirqrtg8kO9aP8ueH+RGPT3kLy0iBU9m\nLEOEfxh2nfkWHxZ9Aq1ea/XeroW+Mqn1pMYe5eordic+W/eU9bhol4iI3A9nVpxErBFbZ3Kp1OrW\nX0dnXCrsWFrpjjHh6cmylPFcoXXH/oy8msOob72IJaMegEppOVvTeSnpoZXfXUvIdjPuMjJ+PhER\neTYmK05iT32GTuQU6Mq6K1aXdYCOH7ad61NCVUqIlaxKJYDBzr1d11pHE6xU4bExv8bHJ7fhYE0B\n3sh/Dw+PXoiowAiHn+UqW/eUMVkhIvICXAZyElv9RYCO3SlxkdbrRMRqPnbtP2eqTzEuHdla6jEI\nQHyUY7Uo19LlVSFT4P7UOZg2eApqW+vwRv57ONd4QfR+ZzSBc4Qjy2JEROS+mKw4Sef6DIkEUMik\nkEo6eogszk7D3JuTRBMavch0iCN1Glff49gS0bV2eZVIJLg94Ze4J+lOXNE2461Da3C87oTVe1n4\nSkREPcFlICcy3+pr/XXA/EC+i01tZl1de5uzurzeED8RoX4h+KDwL1hz9EPMSb4Tk+ImmN2TlRqN\nDTuLRJMzIiIia5is9LKuCU1vFZ2K6emuIGtGRaXh8bGLseboJnxS/AUutl/GzKHTzJa5Jo+Nc+qp\nzbb09rITERG5BpeBfFR4sJ9ZO3pnGdpvEJ7MWIbIgAj88+xufHTiM+gNetPrc29OMjvM0JW47ERE\n5B04s9LHwoP9er0QdOakobhr0lCXPb9/YCR+m7EMq49uQm51Ppq1zRgln4avf6ow7Why1dJXd2ce\nERGR52Gy0sdmT0l0uIi2O0EBcrS16zEgIgjJg0JRfP6S2Tk+M29MdPqhWNba/z8+djHWH9uM4/Un\ncaSpBpqGdEBQmJIzmVTilPoVCYC4KNV/x3oRlXXN19RHhoiI3AuTlT5m/GG65dtiNLfaP9ugkEnx\n0IwRKKu4bFED0tyqc8kSjxix9v+Ls9OwZNQDeGrn+9AEl8Mv5QDaS8YB2o5akn4qJRoaezar1HV8\nH39bYvb74IrzmIiIqG+wZsUNZKVG453Hb8DUjHi732MQBGSlRqP4/EWrr19L/xRHiR0uuHVPGeRS\nOZpOjISuZiCkQU3wG5ELiV9Ht9/LVzQOjRmwXmuTW1QjWrTbm78PRETkGpxZcSNiiYc1xi3HYm3+\nr7V/iiPEam6M12Mjg1B+LhWCTglF3Cn4jchFe/E4DFANwNybk5AY1w9b/11mmmUJD/YzFcd23uYt\nVodi61ym3vx9ICIi12Cy4kbsOV/IyLjlWKzNv7P6pziD8fRlXcVwCDoFlINPwm9ELprKJyJn1R7E\nRgZi9uREq4mIPUs4FXXiCUm/IOU1xU5ERH2Py0BuJDYy0Op1VYACClnHt0ohk2JqRrzph7hYV1xn\n9k/pjlg/k/CQjuudu/tCPRSKinRApkf7wH1ASG2PT582kts4zbmhqZ0nMBMReTgmK25ELPG40qo1\nndas1RuwO7/c9AO4cyIgk0pM7f17s6hUrJ/J7MlXr2elRmPFwkysf3oKQjRDoSkZC0gA5fBDkIZV\nA+h5fYlOb3tHEetWiIg8G5eB3EhWajTKKi5j7+FKaPUGKGRSKBVSqz1Jdu0/Z0pIumvz3xPWtiKL\nfYa1YwRs9TmprGuBQegPTfE4KJPyoUw8Au1pA6rq43oUa1xUkM0zkVi3QkTk2ZisuJGuu1q0eoNp\nRqUrV/4AFtuKDIjXkDiSMBnrbAxN4Wg/OR5+yXlQDDsKVZ2iR/Eaa2LEuFP9DhEROc7hZKW4uBit\nra0wGCx/iKanpzslKF8ltgXYGlf+ABbbXdN5NudadE4uhOZQtJ/MhF/yQTRH5WPPhThMGTjJoecZ\nZ6TEti/3Zv0OERE5n93JyvHjx/H444+jsrLS4jVBECCRSHDixAmnBudrHGm778ofwK7eDm2xbBQU\ni+sHzMW/Gz/HttKvoDVoMW3wFIee6ci2byIi8ix2Jysvv/wypFIpXnnlFcTExEAqZW1ub4qPUtlV\nD+IMvbEd2tqy0diWKLxdsB5/O/UPaPRazBh6s9mJzbbY2va9a/85zLyRhxoSEXkqu5OVwsJCvPnm\nm7jppptcGY/Pyi2qgUQCCFY2tgT5y7FiYWavxSJWA+Lq5ZT+gVF4In0p3i5Yi3+c/Rc0Bg3uTJhh\nV8IilmABLLAlIvJ0dicr4eHhkMlkrozFZ3UtaO3KT+ma33exHT+O7u5xpoiAMDyRsRRvF6zH7vN7\nodVrMTvpdkgltmfybBXZssCWiMiz2Z2s3HfffVi3bh0mTJiAgIAAV8bkc2y1iwc6ztBxtu4O/nPF\ndmh7hfr1wxPpS/DO4fXYW7EfOoMO96b8ymbCkpUajR+OVaHwTIPFa8mDQl0ZLhERuZjdyUp5eTnK\nysowadIkJCUlWSQsEokEGzdudHqAvqC7NvvOnhnYW1Bu8+A/dzilOFipwuNjF+Pdw+vxY9VBCADu\n6yZhuXzFeoFy8flLLoqSiIh6g91VsmfOnEFKSgpSU1Mhl8uh1WrN/tFonP+3f18h1mbfyNm1Ilt3\nl4q+Vq6+4jbt6YMUgXh0zCIMCo7H/qqD+PjkNhgE631nAPc41JGIiJzP7pmVjz76yJVxmNTV1eG1\n117Dvn370NbWhtGjR+N3v/sdkpKSrN7/q1/9CsePHze7NmvWLLz88su9Ea5TiNVbGE8fdvZMx/ma\nJpuvd9cArjcF/jdheffwBvxUlQcIwNwRs6zOsHjCoY5EROQ4h5vClZWV4cCBA7hy5QrCwsKQkZGB\nYcOGOSUYg8GARx55BIIg4P3330dgYCDeeecdPPDAA9i1axfCwsLM7hcEAadPn8brr7+OCRMmmK57\nWk1Nbxa05hbVQCaVwGDo/jwdd0hWACBQEYBHxuTg3SMb8FN1HgQImDditkXC0le7mIiIyLXsTlYM\nBgOWL1+Ozz//HEKn/bUSiQReNoowAAAgAElEQVR33HEH/vCHP9jdE0PMyZMnUVBQgL///e9ISEgA\nALz22mvIzMzE999/jzvuuMPs/gsXLqClpQVjxoxBVFTUNX12X+uNgtbudh11Zlw6ceSMIFcKVATg\n0TE5ePfwRuRW50OAgPkj7jZLWPpyFxMREbmO3cnKunXrsH37djz55JO47bbbEBkZCbVajR07duDt\nt9/GsGHDsGjRomsKZsCAAVi7di2GDh1quiaRSCAIAi5fvmxxf0lJCfz9/REX17MD8HxNd7uOunr0\nrb1mhygadwyVVVxG8fmLvZ7ABMgD8MiYhXjv8EYcqD4EQQAWpFomLExOiIi8i93JyrZt27BkyRLk\n5OSYrsXExGDRokVob2/Htm3brjlZCQsLw+TJk82uffTRR2hvb8ekSZbnxZSWliI4OBi//e1vceDA\nAYSFheGuu+7C/fffzw67VnS366gzvUGwetozAKtbnssqLmPuzdbrimxxdOYmQB6AZWNy8N7hDThY\ncwiAgAWp95gSFneZCSIiIuexO1lRq9XIyMiw+lp6ejrWrVvntKCMdu/ejTfffBMPPvigaVmos7Ky\nMrS0tGDSpElYvHgxDh06hFdffRVNTU147LHHun1+WFjHLpyoqGCnx+6OBsUE42xVo0uevTu/HOkj\nonHD2Hi737O3oNzq6c4hIf7dPCcYz0f+Bn/4/l0crCmAn58cj2Q9gB+OVFp9XkVDCxbfOcpnvs9G\nvjZegGP2FRyz77E7WRk4cCAKCgowceJEi9cKCgqcXjPyxRdf4LnnnsOtt96Kp556yuo9q1atQktL\nC0JCQgAAycnJaGpqwpo1a/Doo492W0Nz8WILoqKCoVbb3h3jLaaPH2h3zUpPfPJ1MUbE9+v2PuPs\nh1h7fONzupslWZz2AN47shE/nD8InUZAyf5BVp+384czGDEk3K7YvIUv/bk24ph9A8fsvWwlZHav\nlcyaNQtr1qzBhx9+iNraWhgMBtTW1mLTpk1Yu3Yt7rrrLqcECwCrV6/GM888gzlz5uDVV18VXdKR\ny+WmRMUoOTkZzc3NaGry/m+so7JSo7E4Ow1DBoRAIgEUMimkko5DEsOD/a75+fb0MzEW+YolKgBQ\nWXfF7D6DIJhmSTr3gPGX++Ph0Q9hcPBA/FSdB3XQQQDWdznZ6i1DRETuze6Zlfnz5+PEiRNYuXIl\nVq1aZbouCAKys7OxdOlSpwS0fv16vPXWW3jsscewbNkym/fefffdGD16NJ599lnTtWPHjqF///4W\nSQx1yEqNxswbEy2ydEd2Conpp1J2e8/WPWXd3iOTSkWLgbtuqTYW3b5dsA4XcAEKQQLtuREAzGfV\nLnTTW4aIiNyX3cmKTCbDqlWrkJOTg4MHD6KxsREhISHIzMxEYmKiU4I5efIk/vjHP+JXv/oV7r77\nbqjVatNrQUFBkEqlaGpqMh2qePPNN+Ptt99GWloa0tPTkZubiw0bNpglL2Sfrtt+A/zkuNKqdewh\ntlu3AAAamqy3xO9MZzA41I02UBGIR8Yuwiv738Ol6PMQDFLoLiSjc8IyMNq313uJiDyZw03hhg8f\njuHDh7siFvz973+HXq/H559/js8//9zstccffxwxMTF45plnsHv3bsTHxyMnJwdyuRyrV69GZWUl\nYmNj8cwzz2D27Nkuic83CBAEoF1jfSeQLQ1N7chZteead+HERaoACA51o1UpgvD/JjyMF//zNjDg\nLCBIoSsfDmPCMnuqa/7MEhGR60mEzh3eupg+fTr+9Kc/ISUlBdOmTeu2YPXrr792eoCupFY3+Uzh\nUmfWxuyMZaCuFmenWSQsv31vX7ezK4uz0wDAajzWntnZ5fZGvPLTe2jSX4SuIhHRmjGYMXGw1aUv\nb8Y/176BY/YNvjJmWwW2NmdW0tPTERQUZPr1tXaoJfflaMM4+55p2bJ/9pREq0mIRNIxo9K146yj\n3Wj7+YXgd1lLsTL3PVyJK0PNBSl27RcQEuLvU7uBiIi8ic2ZFUcYDAaPa8TGmZWrclbtgcGBPwpT\nM+JRfP4SquqboRc5Z0gmlSBnZqrF9mPAtS3xc4tqsO6feVCOyIXUrw3a88nQVQ/tdlbGm/DPtW/g\nmH2Dr4y5xzMrnU2dOhXvvfceUlJSLF47evQofv3rX+Onn37qWYTU58ROLFbIpNAbDJBJpdAZDFZn\nP5ZvzLX63n4qpdUmbYuz07BiYaZrBoKOWSJBEwDNyUz4jciFYlAxBIMUu/arfCZZISLyJjaTlZ07\nd0Kn6yi0rKiowDfffIOTJ09a3Ld//35oNBrXREi9QuzE4odmjOj2B7zYe8V2B7n6RGfjTiKhPRDt\nJ8fDL+UAlENOoOasFIDrkiQiInINm8lKYWEhNm3aBKDjQMH333/f6n0SiQQPP/yw86OjXnMtJxZb\ne2/yoFCzM4Q6s6d5XE/lFtVA0ilLEtpUaD+ZCb8RByAfXIgD1YeQGZPuss8nIiLns1mzotVq0dDQ\nAEEQMHnyZKxevRqpqalm90ilUqhUKgQEBLg8WGdjzYprdLezSCGT2jVj46iPvy0RTZAkAY0IGZUP\nHbRYOHIexkSNtPmcvYcroNULUMgkuGFMXI8OaexL/HPtGzhm3+ArY+5xzYpCoUB0dMcPlN27d6N/\n//5QKBTOjY68Rndn/hhp9QZTMuOshCW3qEY0UQGASL9oLEnPwduH12PT8Y+xZNSDGBFhmYB0TXi0\nesH0taclLERE3sLuAtsdO3Z0e8+SJUuuKRjqG90dGGjvMxzt0+LM2pXutl43NLZhaL/BWHLdA3j/\n6AdYe+zPeGRMDhJDh5rdt/dwhdX37z1cyWSFiKiP2J2svPXWW6KvqVQq9O/fn8mKB+qaZBh37ACO\nzXr0pE+LM2tXxNrzGxnb7SeHJyJn5DysO7YZq49swuNjf41BIfGm+7R666uiWr3BabESEZFj7E5W\nrO0CamlpQV5eHl544QU899xzTg2Meoe9BwZ2p7tkwRqx1vk9Ibb12qhzu/3rIlNxfcgv8Z9Lu7By\n/2qE1kzG7eNGISs1GgqZxGrCopB5Vg8hIiJvck3/Bw4MDMQNN9yAZcuW4dVXX3VWTNSLHDkw0JbY\nyEDR18JD/KxenzFxsEOfYYux2VxXqgAFFmen4YaxV2dPcotq8M23emjOjIREocWl/nux7uuDWLjy\nO9EGd0mDQrF8Yy5yVu3B8o25yC2qcVrsRERkm1P+uhgbG4tTp04541HUy8SSDEdnPcSShcXZaXj9\n4euxODsN8VEqyKQSxEepnN5NNis12uIzpmbEI1SlxPodRXj09T2mBMM4m6Svi4fmXAokynYoUw5A\nULSha64ik0iQNjQchWcaUK5uhkEQTEtlTFiIiHqHw6cud1VTU4MNGzYgLi7OGfFQLxNr6OborEd3\nfVqyUqNd3j2282d0rcU5W9WItV8VYt2OQnTerK+vGQKtTA9FfCn8Ug6i/UQmoLs6EzQgMgiXr1g/\neNHVze2IiKiD3clKWlqaxUGGBoMBgiBAEAQuA3moa2kGZ+1Z7vLDe+ueMqvXrXUV0lUOA2Q6KAac\ngV9yHtpPZgL6ji36VfXNVt9jfI2IiFzP7mRlyZIlVk9dVqlUmDx5MoYMGeLMuKgXuVOS4SwNTdZn\nQ6yTQHchCRKpDvLoC/9NWMYDBjn6qZRoatbAoLd814CIIKds+yYiItvsTlYeffRRV8ZB1Mck0J5L\nBWR6yCMroRxeAE1JBhoaxZOe5EGhPd72zSSHiMh+DtWs1NfX48MPP8TRo0dRW1uLsLAwZGVlYf78\n+QgPD3dVjEQOCw/2c3B2BQAk0J4ZCYlMC1mYGsqEI9CUjQFgOaMIQLRjbne1LM7qbUNE5Cvs3g10\n7NgxTJs2DVu2bIFcLsd1110Hf39/fPDBB7j99ttx7tw5V8ZJ5JDZUxJ79kZBCk3ZGOgbwyALr4Fi\nSCFEj48WUa6+YnOnkK3eNkREZMnumZVXX30VCQkJWLduHUJDQ03X1Wo1cnJy8NJLL2H9+vUuCZKo\nVwkyaEoyOk5q7l8OQaeArjzZoUfYmilxVm8bIiJfYffMytGjR7F06VKzRAUAoqKi8Oijj+LgwYNO\nD46op3rS/t+MQY724gwYWgOhiD0DeczpHsRgfaZErLdNvyAlG88REVlh98xKdHQ06urqrL6m1WpZ\ns0JupSft/y3o/KApHg/liFwoBpVA0CugVw+0++2dZ0o6F9SGqpRW729oajfV2RjrWNZ+VQiFTAKd\nQUBcZBALcYnIJ9k9s/Lkk0/izTffxO7du82u5+Xl4Y033sATTzzh9OCIespW+397yaQSCJoAaIrH\nQdAqoBhSCGlYtd3vN3YBNhbUGjvgGhOS8BA/SCTdnzuk1QsQhKsJzG/f28dZFyLyKTZnVro2gtPp\ndHjkkUcgl8sRHh6OxsZGtLW1QS6X44033sBtt93m8oCJ7CHWmdcROTNT8cGuImjbVGgvGQe/lAMd\nO4RK5DA0RtoRQ0cXYLElqctNGgiC4yc6NzS1c/cQEfkUm8mKWCM4Indn/CHek4QlPkpl6uJbVnEZ\nu/PLITT3g6YkHcrkPCiHF6D95HgIzaGiz5BIrsYgtiSlF2uNaye2+yciX2EzWWEjOPJkWanRDicr\n8VEqrFiYafp67s1JAIB/F1RA3xQBTdkYKIcXwC85H+0nMiG0Blt9TlykyvTr2MhAlKudv9OHu4eI\nyFfYTFYOHTqElJQUBAYG4tChQ90+LD093WmBETmDo83hrB3gOPfmJFPSkltUgw0/aqEcdryjLX9R\nFgSNZX1M8qBQLN+Ya7Og9lo5ejI2EZGnspms3Hffffjss88watQo3HfffaJLQoIgQCKR4MSJEy4J\nkqinZk9JtHt2JTzEr9tllY7Xp2NboRQtEUehTOlIWDqf1AyYd7d1vJOufRw9GZuIyFPZTFY2b96M\nhIQE06+JPE3nupPuzJ5sX9fbjoMf5+G3X2xEa2ixxUnNCpnU4aJZWyQS66dFExH5CpvJSmbm1bX7\nPXv24NZbb8V1113n8qCInGnuzUk4cqoedZdarb7euaDWETHadJTWtkDe/wKUww9BUzIOMMicmqgA\ngFxqPflhgS0R+Qq7+6x89tlnaGxsdGUsJnq9Hm+88QYmTZqEsWPH4rHHHhNtSAd0nFs0Z84cjB49\nGtOmTcP27dt7JU7yHA/OTLV6fXF2GlYszOzRD/3isxehPZsKXX0MZCEXoUw8DEicm6gA4lubK+qu\nOP2ziIjckd3JSlpaGvbt2+fKWEzeeecdfPnll1i1ahW2bNmC6upq0Z1JDQ0NyMnJQVpaGr744gvM\nnz8fzz77LH744YdeiZU8ww1j47E4Ow3xUSrIpBLER6mwODut2yQlt6hGtAW+XgAACbSnR0F/OQKy\nUDUUQ4/B0YMPe0rKtgJE5CPsbreflpaGzZs349tvv0ViYiIiI82bYkkkEqxYseKaA9JoNNi8eTN+\n//vf4/rrrwcAvPnmm5g6dSoOHTpkseNo69atUKlUePbZZyGVSpGQkICioiJ88MEHmDRp0jXHQ96j\no9bE/hkUY+dZI2MHWeOzTAQpNKVj4ZdyEPLIKkCnhPZ8CgDXJhN6g4DcohouBRGR17M7Wfn666/R\nv39/6PV6FBcXo7i42Ox1ZzWPO3nyJJqbm83qZeLj4xEXF4e8vDyLZCUvLw/jx4+HVHp1kigzMxMv\nvvgiDAaD2XUiR4h1njXWiqgCFLjSqu24+N+DD/1GHIA85hwErRK6qoReiJF1K0Tk/exOVr777jtX\nxmFSXd1x9kp0tPn/gPv37296rev9qampFve2trbi0qVLPGCRekys86yxGdvcm5PMt0XrlWgvHge/\n1J+gGFgKQaeAXj3IpTGyMRwR+QK7k5VnnnkGDz/8MAYOtDx19vTp03jttdewevXqaw6otbUVUqkU\nCoXC7LpSqUR7u2W/ira2NiiVSot7gY4lJVvCwjqaeUVFWe9C6s045u4NignG2SrLovKB0cGIigrG\nzBuDERLij627S6/ep/WHpng8/EbkQjGkCIJOCcPFmB7Fq5BLodXZLtg1xmINv8e+gWP2Db445s5s\nJiuVlZWmX3/55Ze46aabIJPJLO7bu3ev04pv/f39YTAYoNPpIJdfDU+j0SAgIMDq/V2TEuPX1u7v\n7OLFFkRFBUOtbnJC5J6DY7bP9PEDrTaUmz5+oOlZI+L7Yfn94/DQyqszj0JbkGlJyJGDDzuTSSXQ\n67sv1E2IDbE6Ln6PfQPH7Bt8Zcy2EjKbycqKFSvw/fffA+ioSXnkkUes3icIAqZMmXINIV41YMAA\nAIBarTb9GgBqa2stloYAICYmBmq12uxabW0tAgMDERzs25koXRtjLciu/edQVd+MARFBov1YFDIJ\ntJ2SC6HFsYMPu+popS90e6bQ7vxyJMb1Y90KEXk1m8nKiy++iNzcXAiCgN/97nd45JFHMGiQ+Rq8\nTCZDcHAwJkyY4JSAUlJSEBQUhAMHDuD2228HAJSXl6OiogLjx4+3uD8jIwNffPGFqeU/AOTm5iI9\nPZ3FtXTN7N1BlDQoDIVnGsyuGZoioDk1BsrEAvgl5aP9RBaENpXIE8zNmDgYZRWX7ToAkUW2ROTt\nbCYr0dHRyM7OBgAYDAbceOONLi9YVSqVuO+++/Dqq68iLCwMERERePHFF5GZmYkxY8ZAo9Hg8uXL\n6NevH5RKJWbNmoUNGzbg+eefx/33348ff/wRO3fuxPr1610aJ5FRblGNRaJiZLgYDe2ZkVAOOw5l\nch40J7IgaMSXJ2USCXJuS0VWarTobqSuWGRLRN7O7gLbO++8EwBQXFyM1tZWGAyWhX/OOnX5N7/5\nDXQ6HZ566inodDr8/Oc/x/LlywEABQUFWLBgATZv3oysrCxERkZiw4YNeOmll3DHHXcgNjYWq1at\nwsSJE50SC1FnuUU12LX/LCrrWhAbGYgZE4eIJhXhIX4I9FOgsi4eWoUGioElUCbnof1EFqATOYlZ\ncnX5SWw3Ulc8fZmIvJ1EEOw7Iu348eN4/PHHzYpujTz11GW1uslnCpc645h7pmuTOCMJrPeslUkl\nWP90Ry3XT4XV2Fq8E22hJZC0hqL9xHjodZbF6vFRKqxY2NFjaPnGXLuWgax14uX32DdwzL7BV8bc\n4wLbzl5++WVIpVK88soriImJYT0I+RyxGRS5yCnLnWc8JqTFICt1Ibac2IqfqvMweEIxTu9LAQTz\n/45a2rSmrrQzJg6xmhzJJBIYICAusmcHMBIReRq7k5XCwkK8+eabuOmmm1wZD5HbEluW0VtZEgU6\nimQ7k0gkuC/lV2jWteBYXRFSJvmj5nAKLjZd3Xrf0NRu0dLfnt1IRETezO5kJTw83GqPFSJv1bU+\nJVSlREOTZWPC2P/OcNiTVMikMjyUNhfvHdmAsksl8IvTAieT0PUcIeMOH0fPMyIi8kZ2Jyv33Xcf\n1q1bhwkTJnTbbI3I01k7xFCMMTGxN6lQyhRYMuoBvHVoLcpxBvI4CXQVSWb3cIcPEdFVdicr5eXl\nKCsrw6RJk5CUlGSRsEgkEmzcuNHpARL1BdEdPsF+CPRXXPOyTIA8AMvGLMSze96EIu40BJ0S+poh\npte5w4eI6Cq7k5UzZ84gJSXF9LVWq3VJQETuQKw+5XKzBq8vu94pnxGiDMbtA+7FF5UfQTn4JDQ6\nJfT1sQAs612IiHyZ3cnKRx995Mo4iNxKbGSg1aUfZ8943DQqCTrhHuys/QSKYccQERSMO8dMYJ0K\nEVEndicrRmVlZThw4ACuXLmCsLAwZGRkYNiwYa6IjajPiG0bdsWMxy2jR2L4pUV45/B6tMUeQGTs\naKd/BhGRJ7M7WTEYDFi+fDk+//xzdO4jJ5FIcMcdd+APf/iD6WweIk/X29uGE0KHIGfkPKw99mes\nProJT6QvQZxqQPdvJCLyAXYnK+vWrcP27dvx5JNP4rbbbkNkZCTUajV27NiBt99+G8OGDcOiRYtc\nGStRr+rtbcMjI0dg/oi78eeiv+LdwxvwZMbDiAyI6LXPJyJyV3a3od22bRuWLFmCnJwcREdHQyaT\nISYmBosWLcLixYuxbds2V8ZJ5BMyY9Ixa3g2GjVNeOfwBlxu9/4W20RE3bE7WVGr1cjIyLD6Wnp6\nOqqqqpwWFJEvmzJwEm4ZMhV1rfV478gGtGhbzV7PLarB8o25yFm1B8s35iK3qKaPIiUi6h12JysD\nBw5EQUGB1dcKCgoQFRXltKCIfN3ModMwKW4CKq5UYc3RD6HRd7QKMDarK1c3wyAIKFc3Y+1XhUxY\niMir2Z2szJo1C2vWrMGHH36I2tpaGAwG1NbWYtOmTVi7di3uuusuV8ZJ5FMkEgnuSboD6f1H4dTl\nM/igcAv0Br1os7pd+8/1anxERL3J7gLb+fPn48SJE1i5ciVWrVplui4IArKzs7F06VKXBEjkq6QS\nKRakzkGLthXH6k7g45PbUFlnfQaT7fmJyJvZnaxIJBKsWrUKixYtwsGDB3H58mWoVCpMmDABiYmJ\nroyRyGcppHIsum4B3j68DrnV+QgaloCmU4noevBhvyBl3wRIRNQLul0GOn/+PB566CFs2LABAJCY\nmIh7770X8+bNwyuvvILnn38elZWVLg+UyFf5y/3w8KiHEB3YH7qIU5APOGN5E1scEZEXs5ms1NTU\nYO7cuThx4gSioy37TSxduhRnzpzBPffcg7q6OpcFSeTrVMogPDomB0K7PxQDSyCLumD2+uUrmj6K\njIjI9WwmK+vWrYNSqcT27dtx++23m72mUqnwyCOPYNu2bRAEAevWrXNpoES+Lsw/FP7lP4OgVUAx\npBDSsGrTazylmYi8mc1k5T//+Q8WLVpkdVbFKDY2FgsXLsTevXudHhwRXZVbVINL9Uq0l4wDDDIo\nE45AGlwPgKc0E5F363YZKCEhoduHjBgxAtXV1d3eR0Q9Z9y2LDT3g6Z0LABAmXQIoVGtPKWZiLya\nzWQlLCwMarW624dcunQJISEhTguKiCxV1rWYfm1ojITm1GhAqkdb/I+oaa7tw8iIiFzLZrKSkZGB\n7du3d/uQ7du3Izk52WlBEZGl2MhAs68NF2OgPZsGiUKLdw5vwMW2S30UGRH5iiPqQvy1+EsYBEOv\nfq7NZGXBggXYt28fXn31VWg0lrsNNBoNXn/9dXz//feYO3euy4IkImDGxCEW1/TqgRirmoSL7Zfw\n7pGNuKJlczgico02XRv+cnIbDlZbP3rHlWw2hRs9ejSefvpprFq1Cn/7298wYcIExMXFQa/Xo7Ky\nErm5ubh48SKWLVuGyZMn91LIRL7JWJeya/85VNU3Y0BEEGZMHIzMEf3xeRmw58IPWH1kEx4dswhA\ncN8GS0Re57sL/8EVbTNmDp0OqcTu03qcotsOtvfffz9GjhyJjRs34l//+hfa29sBAEFBQZg0aRIe\nfPBBjBkzxuWBElFHwmKtmPauxJm4omnBwZpD2HD8IzzX/9E+iI6IvNUVbTN2n98LlSIIUwZO6vXP\nt6vdfkZGBjIyMgAADQ0NkMvlLKglciNSiRTzR8xGq64Fx+tP4t3cD3Fv4uxe/9sPEXmnb87tQZu+\nHbOGTYe/3K/XP9/h/5OFh4czUSFyQzKpDAtHzkNCvyH48UI+tpb8DYIg9HVYROThLrVfxt7yHxHm\nF4pJsVl9EoPdBxn2lsLCQrz22ms4fvw4/P39ceONN+Kpp55CaGio1ftbWlqQnp5u8T/lV1991aLr\nLpG3yi2qwa79Z1FZ14KY/tchYngL9lbsh0oRhBnDpvV1eETkwf5xdje0Bh1uHXozFDJFn8TgVslK\nTU0NHnzwQUybNg3PPfccLl26hBdeeAG/+c1v8OGHH1p9T2lpKQDgX//6F/z9/U3XOftDviK3qAZr\nvyo0fV1ZowUaUhE1rh1/P/svBCmDMDn++j6MkIg8lbqlHj9WHkD/wEhkxaT3WRxulaz84x//gFKp\nxIsvvgiZTAYAeP755zF37lxUVlYiNjbW4j0lJSUYMGAABg4c2NvhErkFY2dbM1p/yM9ORHDCD9ha\n8jeo5IEYFzO2t0MjIg+368w3MAgGzBw6HTKprM/icKvqu1/84hd46623TIkKAEgkEgBAY2Oj1feU\nlpZi2LBhvRIfkTvJLarB8o25KFdb761SWyPBstE58Jf5488nPkVhfXEvR0hEnqziShXyag5joCoW\nY/tf16exuFWyMmjQIIwbN87s2vr16xEdHY3hw4dbfU9paSlaWlowf/58/OxnP8OcOXPw/fff90a4\nRH3GuPQjlqgAHScxDwyOxZJRD0AmkWL9sc04fflcL0ZJRJ5sx+mvIUDAbQm39PnOwl5dBiovL8fU\nqVOtvqZUKnHs2DGza6+//jr+/e9/47333jObbemstLQUKpUKv//97xEWFoadO3di8eLF2LRpEyZO\nnGgznrCwjvblUVG+10CLY/ZsXx/M6/aee6cnIyoqGFFRo6EMWoTX963FmmObsOIXT2JgP8slVW/g\nTd9je3HMvqG3x1xSdxrH6oqQEpmAG5PHmVY5+opE6MW9jVqtFufPn7f6mlQqxdChQwEAer0eK1as\nwKeffooXXngBc+bMEX1ma2srACAgIMB0LScnB3K5HGvWrLEZj1rdhKioYKjVTY4OxaNxzJ4vZ9Ue\nGET+042PUuHe6ckYEd/P7HpuVT42n/gU/ZQheDLjYUQEhPdGqL3G277H9uCYfUNvj1kQBLxdsA4l\nl07hifSlSAwd2iufaysh69WZFYVCgYSEBJv3tLe34/HHH8cPP/yA1157DbfddpvN+zsnKUZJSUnY\nt2/fNcVK5M5iIwOtLgHFR6mwYmGm1f+5ZQ3IwBVtM74o24l3Dq/HkxnLEKxU9VbIROQhii+WoeTS\nKaRGJPdaotIdt6pZMRgMePzxx/HTTz9h9erV3SYq9fX1GDduHL755huz68ePH0diYqIrQyXqU9YO\nNey4Ptjm+6YOugHTBuCtONUAACAASURBVE+BurUe7x3egFZdm12fZyzmzVm1B8s35iK3qMbRkInI\nAwiCgK9O/RMAcNuw6X0czVVutXX5k08+wZ49e/DSSy8hJSUFarXa9FpoaCgUCgWampqg1WoRHh6O\niIgIjB07FqtWrUJwcDCio6Oxbds2FBQU4IsvvujDkRC5ltihhlmp0cgtqsHXB/NwvroJsZGBmDFx\niNl5QtnDbsEVTTN+rDqAtUc/xLLRC202eurax6Vc3Wz62to5RUTkuY7UFeJc0wWM7T8Kg4Lj+zoc\nE7dKVnbs2AEA+P3vf2/x2scff4xx48bh5ZdfxoEDB/Ddd98BAN544w28+eabePrpp3Hp0iWkpaVh\n06ZNoruHiLyFtUMN7UksJBIJ7k25Cy26FhxWH8emwr9g4ch5oj0UrPZxQUeixGSFyHsYBAN2nP4a\nEkhw21D36nztVsnKX//6127vWblypdnXISEheOGFF/DCCy+4KCoi99W5zX5sZCBa2nRW7+uaWEgl\nUjyQei/eP/IBjtQV4pPiLzA3ZZbViv/Kuharz6yqF982TUSe52B1AaqbazBxwHhEB/Xv63DMuFXN\nChHZr3OvFYMgoFzdjIamdqv3WkssFDIFfj3qfgwKjsP+qoP426l/WH1vbGSg1esDIoJ6HjwRuRWd\nQYddZ76FXCLDrUNv6utwLLjVzAoR2U9secaazolF19mYqVnZaNNvxbfn/w2VMgg3DbrR7L0zJg4x\nW1q6et12MS8ReY4fKw+gvq0BU+InIdw/rK/DscCZFSIPJbY8Y40xsbA2G/PnnWcwKehOhPr1w5dl\nu7C/8qDZe7NSo7E4Ow3xUSrIpBLER6mwODuN9SpEXqJdr8E/zu6GUqbEtCFT+jocqzizQuSBcotq\nIJMCBr3la+HBfghR+eF8dSNkUil0eoNpFkZsNub7AxfxyJwc/DF/NT4+uQ0Bcn+M6XQWiLViXiLy\nDt+X70Ojpgm3DP4FQpTu2R2YMytEHsY4O6LVW+9gO3tKImZPHQ6DAGj1Bgi4uiuoos56UWxVfTMG\nBEVj6eiHoJAp8EHhX1BYf9KFoyAid9CibcW35/6NQHkApnZZAnYnTFaIPIzY7IhCJsXi7DQAwFt/\nLbB6j1xq/T95Y03L0H6DsHTUg5BKJFh/bDOKG8quOV4icl/fnv83WnStuHnwZAQqLDvCuwsmK0Qe\nRqxWRas3oKzicsesi85g9R6dwfr1zsWySWEJ+PV190MQBKw59iFOXTp7zTF3hx1yiXpfxZUq7D6/\nF6F+/XBj/PV9HY5NTFaIPIzYVmIA2J1fbvO9cZEqu4plUyOS8dDIedAZdHj/yAc413jBKbFbY63o\nd+1Xhd0mLF0TnL0FtsdORFfpDXpsOfEZ9IIe9ybfBT+Zsq9DsonJCpGHETsXyB4tbVoAwIqFmVj/\n9BSsWJgpWjg7OioND6TOQbu+He8d3oiKK1U9/lxbbHXIFWMtwXltSz5nZIjstPvCXpxvqkBmTDpG\nRo7o63C6xWSFyMNkpUYjPNivR+9taGq3a9bCKCN6DOaOmI1mXQveKViPmubaHn2uLT3pkNuTBIeI\nOlQ312LXmW8RrFRh1vDsvg7HLty6TOSBLl3RXNP7bZ3r07Vp3IyJQ3BP0h34tGQ73j68Hk+kL0Vk\nQLjV+3qyvTk2MhDlasvExFaHXB4BQNQzBsGALSe2QmfQYU7yXQhSiC8ruxPOrBB5IFt1K/YQ+6Eu\nVj/i15iAOxNn4FL7ZbxdsBbfHSvrUZ2JNWLLWrY65PIIAKKe+Xf5PpxpPIf0/qMwJmpkX4djNyYr\nRB7oWupWAKBfkNLq7htbyys3DboRM4dOQ33bRXxZ8RdAYXkOUU+WYXrSIbcnCQ6Rr1O31OOrU/9E\nkCIQdyfd0dfhOITLQEQeyPiD/INdJ6DVW9+ObEtDU7vp0EPjrAjQ/fLKLUOmQmPQ4ptze+CXfBDt\nJzMBndLiPkc52iHXeO+u/ec6GtpFBOHe6ckYEd+vR59P5O0MggEfn9wKrUGLeSmzEKxU9XVIDmGy\nQuShslKjUVZxudvtyqoABZRyKS43azAgIggtbVqrpzPv2n+u2/oRiUSC7GG3YO/R82jrdwp+yXlo\nPzke0CvM7usNXROcqKhgqNVNvfb5RJ7kh4pclF46jVGRaciIHtPX4TiMyQqRB8otqsHWPWVWkw6j\n+CgVVizMtLies2qP1fur6puRMzO12xOWJRIJZifdjk3HPoO8f/nVhMUg5zIMkRuqb72I7ad2IUAe\ngHuS74BEIunrkBzGZIXIwxiLYLsjljjYmj2xtrwyY+JgiyWaCWkxEDAbn5V9Dk3weQSPPITZg+by\nsEMiNyMIAj4p/hzteg3mjbgboX6euVTKZIXIw4gVwdprxsQhNmdP7K0fmZg2AFmpD2Nz0ac4WFOA\n3PYdGKd7CP5y/x7F5ayt0ER01U9VeTjRUIIR4UmYEJPR1+H0GJMVIg8jVgTbVddeKp2TgfBgP0AC\nXL6iEZ09sYdUIsWC1HsgQEBezWG8f+QDPDx6IfzljjWt6zpb1LnolwkLUc9car+Mz8t2wF/mh/tS\nfuWRyz9GTFaIPIzYMk5XlXVXTL/umgwYa1262yJsD6lEigUj7oEgCMivPfLfhOUhhxIWW1ummawQ\nOU4QBHxy8gu06towJ/kuhPuH9XVI14R9Vog8jL09VmTSq/95u7o9vUwqw/2pczC2/yicunwGa45u\nQrve/i677EhL5Fx5NYdxvP4EkkITcH2sZaG9p2GyQuRhujZRE6MzXO2/0hvJgEwqw4Op92Js1HUo\nvXQaa45sgsbOhIUdaYmcp1HThK0lf4NSqsDcEbMglXj+j3rPHwGRD8pKjcaKhZnImZkKhcx6wiKX\nSk2dabtLBnKLaqx2tHWUTCrDg2n3YUzUSJRcOoXVRz+0K2FhR1oi5/ms5G9o1rUgO+GXiAyI6Otw\nnILJCpGHMtahaPWC1de1eoPpvB5byYDYeUDXkrA8lDYXoyPTUHKxDGuP/hkavdbme3rScp+ILBXU\nHkNB7VEM6zcEN8b/rK/DcRoW2BJ5KHu3MK/9qtA0+6KQSaEzGBAXqTLtAFq+MVfk+T0vbpVJZXho\n5FxsOL4Fx+qKsPboh1g86gEoZQrR9zjSct/aNueZNwb3KFYib3FF24xPi7+EXCrHvBTvWP4xYrJC\n5KHs3cIMwDT7YjxHqPNW5QqRnUW26lk+/rYEew9XQKsXoJBJcMOYOMy9OcnsHrlUjpyR87Dh+Ec4\nVncCq498gCWjH4SfTCnyVPuIbXMOCfHn2UD0/9u797io63x/4K+5AjLD/SLIReQOioKCooS31DbN\nvGFumpq261lP2la7p11Nz57O6Xe2WrMtL7mpmWVbmpGYbmUczTRTULwgyE3lJgzD/T7AzPf3BzHO\nwNwZ+H4Z3s/Hw0f5ne985/3hC3zffj7vz+czrH2RfxJNnc1YFPw4vB292A7Hqmwn7SJkmNFXh2KK\nnllAR87kQ/cgkv7i1iNn8pF+tUwjAWKQfrUMR87k9zm3O2F5BuN/qWHZff0A2rvaLY77co4MB0/l\n6HztWHqBxdclZKi7VZ2DDNk1BEr9Mcv/EbbDsTpKVggZokydwqxLRU0LLufIDG6C2FPPoll425Oo\n6HL++gOdx4V8IdZHr8REr/EoariHXdf3o7WzzeyYjdXolMpoE0MyPLV2tuGfd76EgCfAqsgUCPgC\ntkOyOhoGImSI0rWPT3iAC/JK6lEmbzb4Xh93R4M1Lz0zonsPtxhajK5niEmXnnVYBHwBrlRew3vX\n/4HnJ/wGjiLTe4eM1ej4e1PNChmeUgu/RkNHIxYEzYWvZCTb4QwIziUrR44cwWuvvaZ1TCAQICdH\nd9cvAKSlpWH37t2oqKhAREQEXn31VcTExAx0qISwTldRqikbHYYHuBjsVXGR2OkdbtFHYGAp74cF\nsV5wihiNEtzH37P2YdOE30Aqlph0fWM1OimzQ80JlxCbkFubj58qMjBK4oO5gTPZDmfAcG4YKD8/\nH7NmzcKFCxfUf86fP6/3/J9++glbtmzBunXrkJqairCwMKxfvx61tbWDGDUh3GGoB8LPU4LoIDeD\niQrQvRy/vuEWfZQMo3O6s/bUaKA+NxxdMn+UN1fg71n70KAwbfhGX42OSMDHhoXRSI71MyteQoa6\n9q52fHrnOPg8Pp6JXG6Twz89OJesFBQUIDIyEp6enuo/Hh4ees8/cOAAFixYgKeeegrBwcF47bXX\n4OzsjKNHjw5i1IRwh74eCAGfh/mJgbh9b+ASeV3L9/dNnnjoLI6CfUMIKlpk+HvW+6hXNBi9tr4a\nnXXzI2k9FjIsnSj6F2rb6zA3YAb8paPYDmdAcS5ZKSwsRHBwsEnnqlQqXLt2DQkJD/c94PP5iI+P\nR2Zm5kCFSAinGVqt9tjZwgH9bF3TnXUnTzw0FoRgTsAMyFrl2HntfdS21xm8Ni0cR8hDBXVFOF9+\nCSMdvfFY0KNshzPgOFWzIpPJ0NDQgPPnz+O9995DW1sb4uPj8cc//hHe3n1/ITU2NqK1tbXPa15e\nXrh169ZghU0Ip8xPHK2zZmV+YqDRWpb+cpaIsf3AZa3F2vTtEu3jLsGTwTMh5Avwr/vpeOfa+9g0\n4bfwHKF/eXBzFo4jxFZ1KDvwyZ0vwAMPqyJSIOJz6lE+IAa1hWVlZZg9e7bO18RiMfbu3dsdlFCI\nnTt3oq6uDjt27MDatWuRmpoKe3t7rfe0t3ev12Bnp70VvUgkgkKhMBqPq2v3v0A9PYffLAJqs+1a\nMF0KJyd7HEsvQKmsCf7eUqTMDkVyrN+AJyu1jQrUovtnr2extgVJQSiT3+tz7q/nhcPLywnPei2D\nk2QEPs8+iXeu78Wr0zcjwMWyLu3hco81UZuHB802H876AtVtNXgi/FEkhESzGNXgGdRkxdvbG6dP\nn9b5Gp/PR1BQEC5dugQ3Nzf18ZCQEEyfPh0//PAD5s2bp/WeniSlo0N7o7TOzk44ODgYjaeurhWe\nnlLI5cNrfQZqs+1LjvXrs5qrXN4EN6kdapuMJ/Lm4PMAXw8JWts7dV77ep4cGxZGa02xnp8YiEg/\nZ/U9SfZ6BMpQHr4oSMP29B3YOH49gpwDzIpjuN1jgNo8XGi2+W5DMU7l/x+8HDwwa+RMm/paGEpC\nBzVZEYlERutRNBMVoHtIx8XFBRUVFX3OdXFxwYgRI1BVVaV1vKqqSuewESHDXcrMEKv3rqgYAGD0\nJkFl8macunQf5dUtEPJ5KP/l7wC0hnRm+idhhNABH+cexbvX/4EN49Ygwo2mIxPSo1PZiU9yjwEA\nVkamGNxry9ZwqsD28OHDSEpKQmfnwx1ay8vLUVtbi9DQvr+0eDweYmNjkZGRoT6mUqmQkZGB+Pj4\nQYmZkKGkp0jVzcnO+MlmMLRYXM/rDNO9ND8D9NnZuWel3A8ON8JRNhldSiX23jiIG/KBHbYiZCg5\nff97yFqrkOw3FSEuQWyHM6g4lazMmDEDLS0t2Lp1K4qKinD16lVs2rQJcXFxmDq1e6vrlpYWyOVy\n9XvWrl2Lr776CkeOHEFRURG2b9+OpqYmLFu2jK1mEMJpk6O88beN0/rMrLETDf6vg1OXinutw8JA\nXuyCtjuxAPjYn/0xLldcHfS4COGaksYyfF/yA9ztXbFwzGNshzPoOFVCHBAQgA8//BA7duxASkoK\nRCIRZs2ahT/96U/g/bI65sGDB7Fr1y7k5eUBAJKTk/Haa69hz549eOONNxAVFYWDBw/2GU4ihGjT\nnFljbNVbP0+J0VVvLVFR06JzETtVowdGlCehM+BnHM79HG3Kdszwm2bVz364qm73zKXwAFfkldRp\nzWSimUeEC7qUXfg49yhUjApPRyyDvdC6PaNDAY9hGPOWqbQhcnnTsC/WGi6GW5vNbe+md86jpb1L\n7+sH/zQLQM8Dvtjo3kOm8vOU4EF1d49KbwI+D3/ZGIG3M/ehXdWKrrJQeHWOw4LEIJ1JhDltNmVL\nAgCcX8dluH1fA8OzzedkP+DY7VOY5puApyNsd9SAMwW2hBBuMpSoaNa39PTG6HvY24kE6FKqoFQx\nEAn4CAtwMbhi7vzEQJy6dF/POiyOKCvhoz5rIsQRmRD6FaBK1o59aS3qWCxlbFPEh+cVm/w5vXtq\nqGeGWEN5cwW+zPkXXOycsThkPtvhsIZTNSuEEO5JmRGi87ibtG9XtKJTCWX39CB0KlW4fa8Wsyf6\nwc9TAs1tDkUCPmZP9MPkKG+9y+j3JDKMwhGKnMlQtUoh9C6FOOQ6vv75br/aZGxTxB66VuTVpXfd\nTe8CYkIsoVQp8UnuUSgZFX4dvgQOQuNLctgqSlYIIRDwde+YzOP17cHoeTCbul7LuaxyOEvE0Bzo\n6VSqkH61DJdzZAaX0VcnFZ32UOQmQNnoBoGbDNXu59DaaVrCoYu+LQl683F3NOk8fT01uvZKIsRU\n6SXnUdJUjuTRkzHWI5LtcFhFw0CEEMyIHaWzeHZWXN+djE0dQumhVDF6h4J6hln0LaOvtVS/UoSO\nvEkQjbkJoXsl3r62F/8+fj1c7V3MigfQvyVB3/MCTbqevp4afT0zNGREjKlskeHU/TNwEkuxdkIK\n2hpVbIfEKkpWCCFYOScMAHD++gN0KlUQCfhInuCrPq7J1CEUU5TJm/HcG2f1PrD7JBUMH51F4zHW\n3wd3WrLwt6u78fyE5+Dj2PdBbygh6Pmv5qq64QEuyCup11pl19QEQv/+R317ZnrX+/QMGWnGRYY3\nFaPCJ7lfoEvVhRXhiyGxc0QbhldRcW+UrBBCAHQnLLqSk970PZgtpVnjcexsIVJmhhhMKuYnBiIh\n0gtnSkbiRNG/8PbVPdgQsxaenjHqa5qSEFhzU0R9PTWt7Z19kjFDQ0aUrBCge/jnXmMxJnqNx3jP\nsWyHwwmUrBBCzGLqEIolapsUWtfW7Bl5bkGU1sN8buBMOImlOHLnC+y6/gF49s8i2D5U/T5dBioh\n6J1UOUvE3Zs6Nmlv6giYP2REbJeu3j/nkY1Iu/sNpGIJUsKeZDtEzqBkhRBilslR3jhyJh/NbZ3G\nT7bQsXOFqG18WMCrb6hkis8kSMVSHMj+GG//9AEWBT+ORwOms5IQaPbUbD9wWb37tKZTl4rNGjIi\ntktX798/vs2A04Qr4IOH345bA6lYwmKE3EKzgQghffTs1fPcG2ex/cBlrSm4l3NkA5qoANBKVDTp\nml0T7R6OF+M2ws3BBV8VncY/876Ej4e9zvcPVkJgKFkyNFWbDB99ev/4XRCHXkMH046nwpdgjDN9\nP2iiZIUQosXYmiHmzgaypjJ5c5/kCQD8pb74f4++Aj+JLy4+uAy78GuAoG9CNVgJgb6p0fxftg3R\nN1WbDB/aCS0D8Zib4I9ohlIWiKm+tBFvbzQMRAjRYqzew5qzgSyhb0jIbYQLXoz7HT68/Smya3Lh\nM7kFuJuAqipG7+yeyzkyHDtbqK4tcZPaaRX4WkpfXU+nUoV9abexYWE0Xluf0K/PIEOb5nCgcFQh\nBG5VUDa4wbN1IsuRcRMlK4QQLcbqPUydDSQS8KFUqSDg89GptP4aEbqKZe2FdtgQswbHC07iXNlF\nOIX8iFeXrEWgk3+f9+vaMkCzwLc/CUvPew+eytXZ9p7Yab2V4asnoRW4P4BoVBFU7Q7oKJqABY8H\nsR0aJ1GyQgjRYqwA1NTZQOvmR5q8q7Ml9BXL8nl8pIQ9CQ8HdxwvOIkdmXvhUBWLmmIPk6YQA/2f\nNdSThOhL0ipqWixeb0UzwQkYKcW8eH9KcIagyVHeqFSU4LvaW2C6hHCtfgRPPj6O7qUelKwQQrTo\nS0Z66j16fpkaSj5612D0ntrL5/FM6m3x85QAYCyaPTPTPwm11QKky0+i2SsD/K4glJWFGZ1CDPRv\n1pApiZmPu6NF06t7X/t+RSMtKDdEVbTI8GPTSQj4fDwftw5hrrr34CLdqMCWEKLF0F49muf4eepO\nFvw8JTofnJOjvPHa+gQ8tyAK0hEik2KZnxjYr9kzN67xociZAlX7CIh870Ec1l142zOFWJ/+zBoy\npQA5PMBFb7JUJm/WuwEi7UFkGxoUTdhz4yDautqxKjKFEhUTUM8KIaQPU1Z3NdYDo4u+XgdHByHA\nAC3tXQAANyc7pMzQLnTtvYqtKT0JD6pbwTASKG4nQhx8AwIXOeyifkZF4UQ8Nydebw9If2YNmVKA\nnH61DG5SO72bQerrLbHm+jFcrpfhcmz91d6lwPs3D6K2vQ4LguYhYWQc2yENCZSsEEIsom8pfEMP\nlWNnC3Ueb2nr0vp773VWjCVPl3Nk+DYjEyWVTVoPN3X9jVKEjvw4CP3zIfK5D7uoS5B6h2LDwmjt\n2UA6kiTNzzDlAWqt7Qh0DQdZa0E5Lu9PxOXY+qu9qx0f3PoYJU3lmOoTj8dGz2I7pCGDkhVCiMXM\n3V9HX0+CLqYWuRp6uGn3/vDRVRoBplUK++Ac7LlxEItD5uOtjY+A98v6J5Z8htHNF/VoaOnAhoXR\nes/V1VtiSW+WLlzen4jLsfVHY0cT9t44iJKmcozziMKK8CVGv+/IQ5SsEEI4ydShDUMPt561TLR7\nf+ZC3jEO31R9iS8Lv8bX129g6ZjFSBrrZ9Fn9H6AavY4lcmb9V7Tx91RPSvJ1N6S3r1Z/t6WzQbi\n8v5EXI7NUlWt1dh9fT+q22sx1SceK8KXQMAXsB2W2dgcnqNkhRAyaAzVafSmVDHYfuCy0V+IhgpV\ne+94DHT/wv3ym1pANAV2oVnokJTiyP2DaFWlYG5MpFmfoe8B2tPj9IfdF/W2t6c3xNzeEs3eLE9P\nKeTyJnW7TH2QcHl/Ii7HZonixlLsuXEQzZ0t+NXoRzE/aM6Q7FFhe3iOkhVCyKBJmRli1norxn4h\nXs6RQcAHVErd79fcLqDnGupekk57KHInQ+R/B8KRJfhK9jHqr/0Ky+Me6XMdaz9AHR2E6vboq/0B\nujdELK9ugZDPQ5eSwShPR51JiLkPEmsNJw0ELsdmrts1d7D/1sfoVHVhRfgSPDJqCtshWYzt4TlK\nVgghg8bQg9nQsImuX4hHzuQj/WqZyZ+tc7sAho/Okiioml0gCrqNH+pPQv7zA/xbwjKtbnpLH6D1\nzR06j7crtLOr3rU/vZOPTiUDQH8SYu6DxJLi6MGiK7bwABecunQfH5zMGTIL4V2qyMSnd76AgMfH\nb8atxnjPaLZD6he2h+coWSGEDCp9RbmTo7zx3BtnoWKYPq/1/oV4OUdmVqKieQ1dvSTKWl+o2qQQ\nh1xHDq7ipW/uY6H/EsweF6qODTD+cO89FOMiEescBjLWI2NsrZbeSYglDxJzi6PN0d/aBs3YhtpC\neAzD4Nviszh59xs4Ckfg38avxRjn0WyH1W9sD89RskII4QxTfyFasvOzse0CmDYpFLcTIQrKBtwr\ncbziEGo7f4WUuCQApk2f7j0Uo09re6fOepoextZq6Z2EsP0g0WTt2ga2hx/MoWJUOJZ/AufLL8HV\nzgXPT1iPkY7citFSbA/PUbJCCOEMU38hWrLzc+/tAnRuMqgSorNoPFSN7hAF5OJcfRqUeXIsCVkA\nsUD3qrs9vQj6khM3JzuMsBOhoqYFzhIxahsV6t6Wngd5YXkDsvLl6uMCI/WXvZMQth8kmqydXLA9\n/GCqTmUnDuX8E9fl2Rgl8cHG8evgYuds9nV09UotmC61fsBmYnvokJIVQghnmPoL0dyF19yc7HTu\nVaS72JcHpdwfqiZXiEOu48fyS/jp3m3M912CeTFRWmeasg9QQ3MH/rZxGoDugtla9B0W6j2kpew7\nEqaldxLC9oNEk7WTCy71GunT2tmK929+hKKGewh1GYMNMWvgIHQw+zr6eqWcnOwR6Wd+4mNtAzl0\naAwlK4QQTunPUv/6NOgodDW2HgrT3r1MvyjgDuBdihOyw5BnzsbKiY+qp56aMhyl+VA1t0dIJOBD\nqVJBwOejS6XCKA+J3iTEkgdJz7/iy+UtEAp46kLe7s/mIXnCKKycE2bWNfUlF84SsVnX6cGlXiNd\n6trrsfvGAVS0yBDnFYPVUSsg4lv2aNX3/XQsvQDb10yyPEgbQMkKIWTI0dWT8Ot54ThwIltnQauz\nY/eDUlcX+2vrE/T3kDACdBZHQ9noDnFQNi41nkH7bRlWhC2GROxoUvKh+VA1t0eoS6XCgVcGZkl2\nfTOONP/e0+Ozck6YyUWz+pKL2kYFLufITE6oND/PTWoHoHvVX0sXwhsID5orsfvGAdQrGjDTPwlL\nQhaAz7N8f2B930+lsiaLr2krKFkhhAxJvXsSPD2lOHAiW/fJPP1d7PvSbkNkpEhEVTcSihZniINv\nIgs3UVh3FysilhhMPvw8+/aCmNsjJORb/uAzllyYWqR8/voDANpDVZq1NnkldX0+Q3O/JU2G6lY0\n4+09i6rn/zcsjMaC6SHqhfDYVFB3F/tufYS2rjYsDpmP2f7J/V7sTd/3k783+zUrbONUsvLee+9h\n165dOl/btGkTnn/+eZ2vJSYmora2VuvYCy+8gI0bN1o9RkIId+lb16ShucPgw7l3r4IuTIcDPKpn\nIXlCG76+9x0+uHUYoyMjgDpfoEt7iGPDwmiT1zcJD3DROw1bqVLpPG6MKTNyTB2S6lSq9ManK4EB\n9N8HfXUrvePVt+rvqUvFWDA9xKS4B1JW1S0cyvknVIwKa6JWWG3nZH3JbMrsUKtcfyjjVLKybt06\nrFixQuvYrl27cObMGaSkpOh8T3V1NWpra3HkyBEEBj7sbnV05E7xFSFkcBgqxnxQ3f/ZIwsSR2Ny\noDfGeUTicO5R3G+8A9dJJRBVTEBNqbNJha26aks0ZwJpt0diUZymzMix1u7Quj7D3KJYU3t5DCU7\nWrtnS+2QMlP37tn9da7sIr7IT4NYIMK/xaxFpJt5NT2G6CuUTo7140RvEps4law4OjpqJRlZWVk4\nevQo9u3bB29vlAhcAAAAGglJREFU3d90BQUFEAqFiImJgVhsWQEXIcQ2GCrGNDS92JjeQzojHb3x\nctxGpJeex6m736Hd+ydMi4lFStiTcBSNMPv6+rYhCA9wsSheU2bkmDskZaqKmhY8tyDKrKJYU3t5\ndCU7uuqNapsU2Jd2G8fOFlotaWEYBml3v8F3xWchFUuwcfw6BEj1b35pKTZn3HAZp5IVTQzD4PXX\nX8fcuXORnJys97z8/Hz4+/tTokIIMTqF15KHs74hHQFfgLmBMzHOIwof5xxFhiwLeXWFeDpiKcZ5\nROm4kuG4C8sb+gy3pF8tQ8goZ7MfXtaY7isS8JE8wRd5JXVmJXk9u0kDpk+lNrWXR1eyY6hXpidp\nAfq32q1SpcSRO1/gcuVVeDl44N8nrIeHg7vF19PE5k7GQwlnk5X09HTk5ORgx44dBs/r6VnZsGED\nsrOz4e3tjdWrV2PRokWDFCkhhC2av+g194wxVi/yoLoZKgNlKnxe9xCMKWuV+Dh64+WJG5Fech6n\n7n2H928eQsLIOCwNfQISkenJQV5Jnc7jliympq/XRLOnRt9D3s9TgtfWJ6j/bspaMtqf/XDxPVPj\nNqWXR1/SaEqvzLFzhRYnAO1dChzI/gQ5tXkIdPLH72KehVRs2fBcb2zvZDyUDGqyUlZWhtmzZ+t8\nTSwW49atW+q/f/TRR3jssce06lB0KSwsRH19PV544QW8+OKLOH/+PLZs2QKlUomlS5cafK+ra3d3\nrafn8Ku0pjbbPltv7/msMp17xjg52SM5Vnf3/ILpUnWB5vmsMhxLL0BJZSMEAj66lCoEjnRCyuxQ\nve83ZKX3QjwSOhF7rhzGlcpryK3Nw8rxizEjKNHodNbzWWV6exYqaloM3ktdry2YLkV5bSu+vnBP\n63j61TLERXojOdYPD2r0DxVpXnPBdCmcnOxxLL0ApbIm+HtL0dzWier6tj7v9XBxMKsAVn0PZE3w\ncHFAXWM7lDqyyNE+TlrX1YwvYKQU9ysaDX5ObaPCop+HhvZGvH1+P4rqihHrMxYvTn0O9kI7s6+j\nz7cZmXqOl/b5Otr6z7Mxg5qseHt74/Tp0zpf42tM0ausrMSVK1fw0UcfGb3m4cOH0dHRAYmkO9ON\niIhAeXk5Dh06ZDRZqatrhaendNgVLlGbbd9waO8/v72j53ieSat9Rvo5611oy9KvnQOc8Pvxv8O5\nsovdvSwZn+DbvB+xInwx/KS+Ot9jrOfCx91RbzyG7vP1vCqdx3u+Pr7u+oeKel+z99dKX8xLk8eY\n/LXrfQ1dyU+PefH+6uv2bvO8eH+Ten7Mvafy1hrsurEf1W01SPSJx6/Dl6CprgNN0D3TyRS9h3zK\n9SSopbImrXiHw88zYDghG9RkRSQSITg42Oh56enp8PT0REJCgtFzxWJxn3qVsLAwnDp1yuI4CSHc\nx9U9YwR8AWYHJCPOKwbHC79GVtVNvJH5Lqb7TcX8oLlwENprnW9sJoylK7Ua+/r0Z2VYayzvr6/d\nmnspaV5X/aCvaYWv+8PaDkPruqivKTWvN6SksQx7bhxEU2czHhs9GwuC5vZ7DRVzNrrk0lYCXMHJ\nmpXMzEwkJCRo9bbo0tXVhdmzZ+PZZ5/F2rVr1cezs7MREsL+XHxCyMDh+p4xrvYueG7sKuTU5OFo\n/lc4W3oBV2U38MSYxzDFZ6J6aMhQzYW+Og1TGPv69Dfh6O+sFX3t1txLqYex2g59s6l6pMw0/XmQ\nU5OHD7I/RqeyEyvCF+ORUYkmv9cQc3YK58pWAlzCyWQlJycHixcv1vlaS0sLWltb4enpCaFQiJkz\nZ2Lv3r3w9/dHSEgIvv/+e6SlpWHfvn2DHDUhZDBxfc+YHlHu4dia8BLOlJzDmeJzOHLnGM6VXcCS\nkAWIcAvVm1T4eUr6lQyY8vVhc5qsOcmmsXVjehdPm7KXUm+dys7uqej3zoDP4+O5cc9ggudYs9pk\niL7krKeYm+0NKLmOk8mKXC6Hi4vu9QUOHjyIXbt2IS8vDwCwZcsWODs74/XXX0dVVRXGjBmDd955\nB0lJSYMZMiFkkPXuGeDSnjG9iQQiPB40B1N9E3Cy6FtcrryK965/gHEekUiKn4LPTvd9aPc36eLS\nTsy6mJNsmjLkZ2nixTAMblTfxj9zTqBZ2QCmUwyJPBEKL0/A0+zL6aUvOfP10J59NZiG0rRpHsMw\nxteZtlFyedOwKVzSRG22fcOtvcDQanNJUxm+LPgaBfV3wefxEWw/FvI8P1RVMWYlFUOpzbp0PyyN\nJ1PbD1zW2/vUnwf9g+ZKfFGQhry6QjAqHrpkgeh6EAwoRQD6NwzXm76iZFM+YyDuc3/iGSicKbAl\nhBACBEj98ELsBtyszsGJotMoaL0J4egczJs2BfMC4622jgfXmdobYu0hv5bOVpy69x1+LP8ZKkYF\nUas3mgpDwbRrf90tWeNGH671dJmyJQOXULJCCCEs4PF4GO8ZjbHuEbhSeQ2n73+Ps6UXcPHBFczw\nm4ZZ/o8Mm6TFGGs96FWMChfKL+Pre9+ipbMVXg4eWBr6BN45UAldgwzWnlnGpaX0uTqbTh9KVggh\nhEUCvgCJvvGIHxmLnx5cwTf30/Fd8VmcLf0RU30n49GAZLjZu7IdJut6HvSWDokU1BXhWEEaypsr\nYC+ww+KQ+ZjhNw1CvhC+Ho2cnlk2ELg+m643SlYIIYQDhHwhkv2mYopPPH6uyMCZkh/wQ9lF/Fh+\nCQnecZgTOB0jHbnxr/KhpKatDqlFp5BVdRMAMMVnEhaO+RWc7R7WRwyVmWXWNNTaTMkKIYRwiFgg\nQrLfVEzznYxM2XV8W3wWP1dm4ufKTES6hWGG3zREuYcbXcJ/uOtQduC74nP4vuQcOlVdCHIKQErY\nkwh08u9zLtfqSQbDUGszJSuEEMJBAr4Ak30mIn5kLG5W5+Bs6Y/Irc1Hbm0+vBw8kOw3Fb9yeoTt\nMDlHqVIiU3YdJ+9+izpFPZzFTlgU8jgmeU8wmOBxqZ5ksAylNlOyQgghHMbn8THBcywmeI5FaVM5\nzpVdRKbsOr4oSMNXRacxziMKiT7xiHQLHda9LU0dzbhceRXnSi+iTlEPIU+AuYEzMS9wllU3HyTs\noGSFEEKGCH/pKDwTuRyLgh/H5cqryKi6hqyqm8iqugkXO2dMHjkRU3wmwmuEFVcz4zClSomc2jxc\nqsjEreocqBgVxHwRpvtNw2z/R+Du4MZ2iMRKKFkhhJAhRiqW4NGA6VgRNx8ZRTn4uSIDmbIb+Lb4\n//Bt8f/BX+KLCV4xiPUcC29HL7bDtTpZSxUuVWTicuVVNHZ0zwwaJfFBok/3rCqJiJszWojlKFkh\nhJAhisfjIcg5AEHOAVga+gSuy7ORIctCXm0hSu9+g5N3v4Gv40iM9YhEuGsIxjiPhlggYjtsizQo\nmpBdnYOrN68jr7oIAOAgdEDyqKlI9J0Ef8mofu+MTLiLkhVCCLEBYoEYCSPjkDAyDq2dbbhVnYMs\n+S3k1ubju+Kz+K74LIR8IcY4BSLMNQThbsEIlPpDwBewHbpOSpUSJU3luFObj1s1uShuLAUA8MBD\npFsYpvhMwniPaIiGaPJFzEPJCiGE2JgRIgdM9pmIyT4T0d6lQGH9XeTXFSGvrhD59UXIry/C1/cA\nO4EYIS5jMMZ5NPylvvCTjNJaf2QwtXW1o7SpHEX191BYfw93G+6jQ9UJoLvIOMwlGOM8IjE7IhFM\nKyUoww0lK4QQYsPshXYY6xGJsR6RAIDmjpbuhKWuCHl1Bbhdcwe3a+6oz3cSSzFK4gNPB3e4O7jB\nzd4V7vaucLd3g6NohMVDLSpGhcaOJtS1N6BOUY96RQPq2utR216HsuYKVLfVaJ3v6zgSIS5BCHEZ\ng0i3MIwQOQAAPBylkLcO3c0biWUoWSGEkGFEInZEnFcM4rxiAAD1igYUN5aitOkBypofoKzpQfd6\nLjreaycQw8XOBQ5Ce9gL7GAvtIe90A5ivhgMGKgYJZSMCqpf/nSplGjsaEK9ogH1igaoGJXOmByF\nIxDuGgI/iS+CXUYj2DkIEjEVyZKHKFkhhJBhzMXOGS6ezhjvOVZ9rK2rDTVtdahpr0Ntex1q2mpR\n016HmvZaNCgaUdNeiy5Vl0nX54EHZzsnBEr94WrvDFc7F7j88t+evzuJpVQcSwyiZIUQQogWB6ED\n/KQO8JP66j2nU9UFRZcCbV3t6FB1gM/jg8/jQ/DLf7v/X4ARQgfOFvGSoYOSFUIIIWYT8YUQiYU0\nXEMGxfBdm5kQQgghQwIlK4QQQgjhNEpWCCGEEMJplKwQQgghhNMoWSGEEEIIp1GyQgghhBBOo2SF\nEEIIIZxGyQohhBBCOI2SFUIIIYRwGiUrhBBCCOE0SlYIIYQQwmmUrBBCCCGE0yhZIYQQQgin8RiG\nYdgOghBCCCFEH+pZIYQQQginUbJCCCGEEE6jZIUQQgghnEbJCiGEEEI4jZIVQgghhHAaJSuEEEII\n4bRhmawolUrs2LEDSUlJiI2NxebNm1FdXc12WAOqoKAA4eHhff5kZmayHdqA2L59O7Zu3ap17MKF\nC3jyyScRExODJ554Aj/88ANL0Q0MXW1eunRpn3ve+5yhpLq6Gq+88gqSkpIwadIkrF+/Hvn5+erX\n09LSMG/ePMTExGD58uW4efMmi9Fah7E2JyYm9rnHe/bsYTHi/qusrMTmzZuRkJCASZMm4cUXX4RM\nJlO/bov32VibbfE+m4UZhnbu3MlMmzaNuXDhApOdnc2kpKQwK1asYDusAXXq1Clm8uTJTFVVldaf\njo4OtkOzKpVKxbzzzjtMWFgYs2XLFvXxgoICZuzYscyePXuYwsJCZufOnUx0dDSTn5/PYrTWoa/N\nKpWKmTBhApOWlqZ1z5uamliM1nJKpZJ56qmnmOXLlzM3btxgCgoKmM2bNzOJiYlMbW0tc/HiRSY6\nOpr57LPPmMLCQmbr1q3MpEmTmJqaGrZDt5ixNsvlciYsLIzJyMjQusctLS1sh24xlUrFPPHEE8ya\nNWuY3NxcJjc3l1m5ciWzePFihmEYm7zPxtpsi/fZXMMuWVEoFExsbCxz/Phx9bHS0lImLCyMuXr1\nKouRDaydO3cyK1euZDuMAVVSUsKsWrWKmTx5MjNjxgytB/e2bduYVatWaZ2/atUq5tVXXx3sMK3K\nUJuLi4uZsLAwpqSkhMUIref27dtMWFgYU1hYqD6mUCiY8ePHM6mpqcy6deuYV155Rf2aUqlkZs+e\nzezdu5eNcK3CWJt/+uknJioqilEoFCxGaV1VVVXM73//e6a0tFR97MyZM0xYWBhTX19vk/fZWJtt\n8T6ba9gNA925cwctLS1ISEhQH/Pz88OoUaNsdkgE6B4GGjNmDNthDKisrCz4+/vj5MmT8PPz03ot\nMzNT654DwOTJk4f8PTfU5vz8fNjb22PUqFEsRWddPj4+2LdvH4KCgtTHeDweGIZBQ0MDrl27pnWP\n+Xw+4uPjh/Q9Ntbm/Px8+Pv7QywWsxildXl6emLnzp3q7+fKykp8/vnnGDduHKRSqU3eZ0NtdnZ2\ntsn7bC4h2wEMtsrKSgCAt7e31nEvLy/1a7aooKAACoUCy5cvR3l5OUJDQ/HSSy8hJiaG7dCsZuHC\nhVi4cKHO1yorK23ynhtqc0FBAaRSKf7whz/gypUrcHV1xZIlS7BmzRrw+UPv3ymurq6YMWOG1rGP\nP/4YCoUCY8eORWtrq857fOvWrUGM0roMtTkpKQkffvghhEIhNmzYgOzsbHh7e2P16tVYtGgROwFb\n2caNG5Geng5nZ2ccPnwYjY2NNnmfNfVuM9D9s2zL99kUQ+83Vj+1tbWBz+dDJBJpHReLxVAoFCxF\nNbDa29tRWlqK5uZm/Md//Af27t0LLy8vrFq1CkVFRWyHNyja29v7/KvElu85ABQWFqK1tRVJSUk4\ncOAAnn76abz77rvYtWsX26FZRXp6Ot5++208++yz6t4jOzs7rXNEIpFN3WPNNgcHB6OwsBD19fVY\ntmwZDhw4gMceewxbtmzB8ePH2Q7VKjZv3oxjx44hLi4Ozz77LFpaWgDY9n3u3WaZTGbz99kUw65n\nxd7eHiqVCl1dXRAKHza/o6MDDg4OLEY2cOzt7ZGRkQGxWKx+YP/1r3/F7du38emnn2Lbtm0sRzjw\n7Ozs0NnZqXXMlu85ALzxxhtobW2Fk5MTACA8PBxNTU14//33sWnTJvB4PJYjtNyXX36Jbdu24fHH\nH8cf//hHNDQ0AOi+p5o6Oztt5h73bjMAHD58GB0dHZBIJACAiIgIlJeX49ChQ1i6dCmb4VpFREQE\nAGDnzp2YMWMG0tLSANj2fe7d5tTUVJu/z6YYdj0rPj4+AAC5XK51vKqqqk/Xoi2RSCRaPQt8Ph8h\nISGoqKhgMarB4+Pjg6qqKq1jtn7PhUKhOlHpER4ejpaWFjQ1NbEUVf/t3bsXf/7zn7FixQq8+eab\n4PP5cHFxwYgRI2z2HutqM9DdO9jzAOsRFhY2pH+uq6urcerUKa1jDg4O8Pf3R1VVlU3eZ0Ntlslk\nNnmfzTXskpWIiAg4OjriypUr6mNlZWUoLy9HfHw8i5ENnOzsbMTFxeH27dvqY0qlEnfu3EFoaCiL\nkQ2eiRMnIiMjQ+vY5cuXMWnSJJYiGnjLly/H66+/rnXs1q1b8PLy6pPEDBUffPAB3nnnHWzevBnb\ntm1T9w7xeDzExsZq3WOVSoWMjIwh/3Otr81dXV2YPn06Dh06pHV+dnY2QkJCWIjUOh48eICXXnpJ\nqwalqakJ9+7dQ0hIiE3eZ0NtHj16tE3eZ3MNu2EgsViMp59+Gm+++SZcXV3h7u6O//qv/0JCQgIm\nTJjAdngDIiIiAqNGjcK2bdvwn//5nxgxYgQ++OAD1NXVYfXq1WyHNyhWrVqFpUuX4t1338X8+fPx\n9ddf48aNG/jLX/7CdmgDZs6cOXj33XcRHR2NuLg4XL58Gfv37x+yi8LduXMHO3fuxNKlS7F8+XKt\n3lFHR0esXbsWv/vd7xAVFYUpU6bgww8/RFNTE5YtW8Zi1P1jrM0zZ87E3r174e/vj5CQEHz//fdI\nS0vDvn37WIy6f8aOHYtJkybh1VdfxX//939DKBRix44dcHNzw6JFi+Dv729z99lQm5ctW4Z79+7Z\n3H02F49hGIbtIAZbV1cX/va3vyE1NRVdXV145JFHsH37dri5ubEd2oCRyWR488038dNPP6GtrQ1x\ncXH405/+hLCwMLZDGxDPPPMMAgICtHoWzp07h7feegslJSUYM2YMXnnlFUydOpXFKK2rd5sZhsGh\nQ4fw2Wef4cGDB/D19cW6devw1FNPsRypZd5++229v5xfeOEFbNy4EcePH8eePXsgl8sRFRWFbdu2\nITo6epAjtR5jbX7uueewe/dunDx5ElVVVRgzZgw2bdqEOXPmDHKk1lVbW4s333wTP/zwg3rm09at\nW9VDPbZ2nwHDbe7o6LDJ+2yOYZmsEEIIIWToGHY1K4QQQggZWihZIYQQQginUbJCCCGEEE6jZIUQ\nQgghnEbJCiGEEEI4jZIVQgghhHDasFsUjhAyuJ555hkIBII+K3BqKi8vx549e3DhwgXU1NRAIpFg\nwoQJWLduHRISEgB0743z5z//2ejn5eXlaf39zJkzeP755zFp0iQcOXJE67Xz58/jN7/5jdFrXrhw\nAZ6enkbPI4QMDEpWCCGskslkWL58OXx9ffHyyy9j5MiRqK2txdGjR7FmzRr8/e9/x9y5czFjxgx8\n/vnn6vcdO3YMqamp+PTTTw1e//jx4wgLC0NmZiYKCwu1liiPjY3VuuaZM2ewf/9+7N+/H1KpVH3c\nxcXFii0mhJiLkhVCCKuOHTuG1tZWHDp0CI6Ojurjc+bMQUpKijpZcXNz01pl+scffwQAg9tkVFdX\n48cff8SOHTvwP//zP/j888+1thuQSqVa78/NzQUAREdH2/SK1oQMNVSzQghhVU1NDYDuDek0CQQC\nvPzyy1i+fLnF1z5x4gT4fD6SkpLwxBNP4MSJE2hvb+9XvISQwUfJCiGEVcnJyWhtbUVKSgoOHjyI\n3NxcdeIybdo0rFmzxuJrp6amYtasWZBIJFi8eDEaGhrwzTffWCt0QsggoWSFEMKqmTNnYvv27ZDL\n5XjjjTewaNEiJCQkYNOmTbh48aLF17158yYKCgqwZMkSAEBYWBjGjh2Lzz77zFqhE0IGCSUrhBDW\nrVy5EhcuXMDu3buxcuVKjBw5Et999x3WrVuHt956y6JrHj9+HG5uboiJiUFjYyMaGxvx2GOPISsr\nq8+MIUIIt1GBLSGEExwcHPDoo4/i0UcfBQAUFxdj69at2L9/P5YsWYLg4GCTr6VQKHD69Gk0NjZi\nypQpfV4/evQotm3bZrXYCSEDi3pWCCGsUSqVmDVrFt59990+rwUGBqpn7hQVFZl13TNnzqCxsRF/\n/etfcfjwYa0/SUlJOHHiBNra2qzSBkLIwKOeFUIIawQCATw9PXH8+HE888wzcHV11Xr93r174PF4\nCA0NNeu6X375JQICArB48eI+rzU1NeHChQs4ffo0li5d2q/4CSGDg5IVQsiAq6io0LmCbVRUFLZu\n3Yo1a9ZgyZIlWL16NSIjI6FSqZCRkYFDhw7h6aefRlBQkFmfdenSJfz2t7/V+fr06dPh6uqKzz//\nnJIVQoYISlYIIQPu/v37+N///d8+x1evXo2tW7ciNTUV//jHP/DJJ59ALpdDIBAgNDQUW7ZswbJl\ny8z6rNTUVKhUKsyfP1/n6yKRCPPnz8cnn3yC3NxcREZGWtQmQsjg4TEMw7AdBCGEEEKIPlRgSwgh\nhBBOo2SFEEIIIZxGyQohhBBCOI2SFUIIIYRwGiUrhBBCCOE0SlYIIYQQwmmUrBBCCCGE0yhZIYQQ\nQginUbJCCCGEEE77/4X8NyS+uyEgAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1d8a5921518>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.set(rc={'figure.figsize':(8.7,6.27)},font_scale=1.5)\n",
    "plt.plot(X.iloc[:,-1].values,contributions[:,-1],'o')\n",
    "z = np.poly1d(np.polyfit(X.iloc[:,-1].values, contributions[:,-1], 3))\n",
    "z_poly_x=[i[0] for i in sorted(list(zip(X.iloc[:,-1],z(X.iloc[:,-1].values))))]\n",
    "z_poly_y=[i[1] for i in sorted(list(zip(X.iloc[:,-1],z(X.iloc[:,-1].values))))]\n",
    "plt.plot(z_poly_x,z_poly_y)\n",
    "plt.ylabel('Contribution')\n",
    "plt.xlabel('LSTAT')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Как мы и говорили, в случайном лесе мы наконец можем наблюдать подобие монотонной зависимости, которая достигается во многом благодаря изменчивости предсказаний из-за большого количества деревьев.  \n",
    "<i>Промежуточный итог: если вам мучает вопрос, а что именно повлияло на ваше предсказанное значение, библиотека treeinterpeter послужит вашим лекарством от всех болезней.</i>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Доверительные интервалы"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "В предыдущих частях мы много говорили о том, как формируется предсказание модели, какие факторы влияют на прогнозную силу в целом и на пресказание для отдельных наблюдений. Но до текущего момента мы воспринимали спрогнозированное значение, как максимально точную оценку целевого признака.  \n",
    "Возможно, для внутреннего использования такой подход и подойдет, но если речь заходит о бизнес метриках, то тут вступают в силу совершенно другие требования, и заказчику, как правило, хочется видеть не только точечную оценку значения, но и насколько сильно он может доверять такой оценке или другими словами, насколько велик разброс для предсказанного значения.  \n",
    "Представим себе типичную задачу кредитного скоринга, когда банку для предоставления какой-либо услуги необходимо оценить величину риска того, что клиент окажется неблагонадежным, и посчитать возможные потери по услуге. Модель, которая, выражаясь в терминах bias-variance, имеет высокий разброс, должна в первую очередь выдавать интервальные оценки таких потерь, чтобы конечный пользователь, не смотря на условно высокую точность алгоритма, мог оценить, насколько велик разброс оценки используемой модели. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<img src=\"img/garfield-1.JpG\">"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "В отличие от линейных моделей, зарекомендовавших себя в том же банковском секторе в основном благодаря интерпретируемости и возможности построения интервальной оценки, в случайном лесе с разбросом полученной оценки все не так однозначно.  \n",
    "Как мы помним, случайный лес состоит из некоторого количества базовых моделей, каждое из которых выдает свой прогноз. Основной идеей в данном случае является построение доверительных интервалов, анализируя предсказания каждого дерева в отдельности, предполагая, что наш алгоритм более уверен в тех местах, где спрогнозированные значения не подлежат такой сильной флуктуации.  "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Алгоритм для расчета доверительных интервалов:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 349,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def make_ci(clf,pred_value,true_value,ci):\n",
    "    tree_preds=np.vstack([tree.predict(pred_value) for tree in clf.estimators_])\n",
    "    upper=np.percentile(tree_preds,50+ci/2,axis=0)\n",
    "    lower=np.percentile(tree_preds,(100-ci)/2,axis=0)\n",
    "    y_pred=clf.predict(pred_value)\n",
    "    y_true=true_value\n",
    "    error=y_true-y_pred\n",
    "    deviation=(upper-lower)/y_pred\n",
    "    return pd.DataFrame({'Deviation':deviation,'Error':error,'Higher Bound':upper,'Lower Bound':lower,'Predicted value':y_pred,'True value':y_true,},columns=['True value','Predicted value','Error','Lower Bound','Higher Bound','Deviation'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 372,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>True value</th>\n",
       "      <th>Predicted value</th>\n",
       "      <th>Error</th>\n",
       "      <th>Lower Bound</th>\n",
       "      <th>Higher Bound</th>\n",
       "      <th>Deviation</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>21.9</td>\n",
       "      <td>30.61</td>\n",
       "      <td>-8.71</td>\n",
       "      <td>21.90</td>\n",
       "      <td>50.0</td>\n",
       "      <td>0.918001</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>27.5</td>\n",
       "      <td>25.22</td>\n",
       "      <td>2.28</td>\n",
       "      <td>13.79</td>\n",
       "      <td>27.5</td>\n",
       "      <td>0.543616</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>21.9</td>\n",
       "      <td>21.17</td>\n",
       "      <td>0.73</td>\n",
       "      <td>19.90</td>\n",
       "      <td>21.9</td>\n",
       "      <td>0.094473</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   True value  Predicted value  Error  Lower Bound  Higher Bound  Deviation\n",
       "0        21.9            30.61  -8.71        21.90          50.0   0.918001\n",
       "1        27.5            25.22   2.28        13.79          27.5   0.543616\n",
       "2        21.9            21.17   0.73        19.90          21.9   0.094473"
      ]
     },
     "execution_count": 372,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "make_ci(rf,X[364:367],Y[364:367],95)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Построив доверительные интеварлы, мы видим, насколько сильно может расти разброс значения от дерева к дереву. В данном случае полученные отклонения говорят нам о том, что наша модель наиболее уверенно определяет наблюдение с индексом 2, интервальное значение которого колеблется в пределах 5% от предсказанного значения   "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<i>Заключение: в этом небольшом обзоре мы убедились, что случайный лес совсем незаслуженно часто называют black-box алгоритмом, познакомились с различными подходами к интерпретации деревянных моделей и в следующий раз, когда нас попросят воспользоваться каким-нибудь линейным алгоритмом, аргументируя это его интерпретируемостью, у нас будет, что возразить!</i>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Полезные ссылки:\n",
    "* Подходы к интерпретации случайного леса (те же грабли, только сбоку) https://towardsdatascience.com/intuitive-interpretation-of-random-forest-2238687cae45 \n",
    "* Немного об интепретации в задаче классификации http://engineering.pivotal.io/post/interpreting-decision-trees-and-random-forests/\n",
    "* Интересные визуализации по интерпретации леса от fast.ai https://github.com/fastai/fastai/tree/7016feaf39583977ff9f70972e5a3232c8bd4447/courses/ml1\n"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
